Здесь есть две фундаментальные проблемы производительности: доступ к жесткому диску и обратный путь в каталогах.И вы можете оптимизировать.
Оптимизация жесткого диска
Жесткий диск в состоянии покоя имеет тенденцию оставаться в покое.Вращающийся цилиндр любит вращаться.Таким образом, узкие места в доступе к жесткому диску запускают его, ищут время и время чтения.Уменьшение количества обращений и увеличение количества данных за чтение увеличит вашу производительность.
Доступ к памяти быстрее, чем доступ с жесткого диска.Так что перетаскивайте большие куски данных в память, затем ищите в памяти.
Оптимизация поиска в каталоге.
Представьте себе, если хотите, дерево «страниц».Каждый узел в дереве - это каталог из нуля или более каталогов или файлов.К сожалению, в большинстве ОС эта структура данных не оптимизирована для эффективного поиска.
Идеальная ситуация - перетаскивать все соответствующие каталоги в память, а затем искать их (в памяти).Как только местоположение файла известно, произвольный доступ к файлу относительно быстрый.Проблема заключается в сокращении времени поиска путем чтения только соответствующих каталогов;т.е. уменьшение количества ненужных операций чтения каталогов.
Большинство приложений, которые выполняют поиск файлов на жестком диске, читают диск и создают свои собственные оптимизированные структуры данных.Это может быть не оптимально для огромных жестких дисков с огромным количеством файлов или случаев небольшого поиска файлов.
Если вы можете, попросите ОС хранить в памяти как можно больше каталогов.
Повышение производительности: сокращение других приложений.
Для некоторых приложений воспринимаемое время производительности зависит от других приложений, работающих одновременно.Одновременный запуск компилятора и поиска в Интернете замедлит работу большинства других приложений.Поэтому постарайтесь исключить другие приложения, которые не нужны для одновременного запуска с вашими.Кроме того, вкладывая средства в повышение приоритетности вашей заявки.