У меня есть приложение C++, работающее в Windows, которое просыпается каждые 15 минут, чтобы открывать и читать файлы, находящиеся в каталоге. Каталог меняется при каждом запуске.
- open выполняется с помощью ifstream.open(file_name, std::ios::binary)
- чтение выполняется с помощью streambuf ios::rdbuf()*
- Общее количество файлов каждые 15 минут составляет около 50 000
- Файлы открываются и считываются партиями по 20 штук.
- Размер каждого файла составляет около 50 Кбайт.
За каждый прогон; эта операция (открытие и чтение) занимает около 18-23 минут на двухъядерном компьютере со скоростью вращения диска 6000 об/мин. Я зафиксировал ошибку страницы памяти в секунду, и они находятся в диапазоне 8000–10000.
Есть ли способ уменьшить количество ошибок страниц и оптимизировать операцию открытия и чтения файлов?
Гоутэм