2014-12-03 4 views
-2

Я имею в виду: память становится все больше и больше, а ОС и компиляторы умнее и умнее. Поэтому мой вопрос, если мне нужно читать данные из файла, имеет смысл реализовать кеш? Разве операционная система не управляет данными в памяти?кэш, имеет ли смысл иметь его?

Редактировать ОК, чтобы быть более практичным, у меня есть 1 ТБ данных разреженных в большем количестве файлов и 180 ГБ ОЗУ. Мне нужно прочитать некоторые из этих данных несколько раз. Имеет ли смысл реализовать такой кеш, как LRU, или когда я читаю из файла (с использованием C++), операционная система будет достаточно умна, чтобы сохранить эти данные где-то так, чтобы читать их из памяти, а не с диска?

+0

Этот вопрос, кажется, не по теме, потому что это не практичная, ответственная проблема. Это скорее попытка открыть теоретическую дискуссию, основанную на мнениях – xmojmr

ответ

2

В зависимости от языка и библиотеки, которую вы используете. Очень вероятно, что вы на самом деле уже кэшируете вещи в памяти.

Как правило, вы хотите кэшировать то, что вы сейчас управляете, пока не будете готовы перенести обновленный буфер данных обратно в файл на диске просто потому, что дисковый ввод-вывод является очень медленной операцией.

В очень больших файлах вы можете не кэшировать все данные из-за ограничений памяти, но вы все равно хотите кэшировать блок данных, который вы сейчас управляете.

Вот общая схема различных способов хранения данных с самых быстрых (наиболее дорогих) до самых медленных (наименее дорогих): Регистры данных CPU -> Кэш ЦП -> ОЗУ -> SSD -> Жесткий диск -> клавиатура и т.д ..

HowStuffWorks.com имеет довольно хорошую иллюстрацию этой иерархии и самая всю статью на самом деле довольно хорошо читать, а также: http://computer.howstuffworks.com/computer-memory4.htm

EDIT: Существует также другой similar discussion here, что вы можете хочу также проверить.

Смежные вопросы