У меня есть программа, написанная на C, которая позволяет пользователю просматривать около миллиарда маленьких файлов. Каждый файл должен пройти определенный объем обработки (только для чтения), прежде чем он будет отображаться для пользователя. Я реализовал буфер, который предварительно обрабатывает файлы в определенном радиусе вокруг позиции пользователя, поэтому, если они работают линейно через них, нет большой задержки. По разным причинам я могу фактически запускать свой алгоритм обработки только для одного файла за раз (хотя у меня может быть открыто несколько файлов и я могу читать из них), поэтому мой буфер загружается последовательно.
Мои алгоритмы обработки так же оптимизированы, как и собираются, но я сталкиваюсь с проблемами ввода-вывода. Сначала процесс загрузки идет медленно, но когда к файлам обращались несколько раз, он ускоряется примерно в 5 раз. Поэтому я сильно подозреваю, что меня тормозит ожидание, когда кеш страниц Windows загрузит мои файлы в память. Я очень мало знаю о таких вещах. Если бы я мог убедиться, что мои файлы были в кеше до того, как они понадобились моему алгоритму обработки, я был бы в деле.
У меня такой вопрос: есть ли способ убедить / задобрить / обмануть / запугать Windows загрузкой моих файлов в кеш страниц, прежде чем я действительно начну читать / обрабатывать их?