C ++ обработка тяжелых данных и подкачка

Я пишу приложение, которое должно обрабатывать большие объемы данных (от 1 до 10 ГБ) в максимально реальном времени.

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

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

как я могу определить, сколько данных необходимо предварительно загрузить, чтобы снизить количество ошибок страниц? Могу ли я каким-то образом повлиять на операционную систему, определяя, какие данные я хочу сохранить в памяти?

спасибо!

// редактировать: в настоящее время я работаю на Windows 7 64 (однако приложение 32-битное), и приложение не требует запускать на любом компьютере - только на конкретном, так как это исследовательский проект.

6
задан BЈовић 10 November 2010 в 09:40
поделиться