Windows CreateFile работает медленно при открытии большого количества файлов

Я использую каталог, содержащий около 3000 файлов. Я знаю о потоках NTFS, в которых говорилось о том, что CreateFile работает медленно для чтения файлов в количестве 100 000 или миллионов. Мое число не так велико, но для завершения CreateFile все еще требуется около 4-7 мс, что складывается, когда я открываю 3000 файлов. Итак, моя проблема аналогична сообщению ниже. На некоторых машинах это молниеносно, когда я вызываю CreateFile, а затем на других это скорость 4-7 мс. Я пробовал файловую систему Fat32 и NTFS, но безуспешно, на обоих она работает медленно. То же самое с Win7 и Win10, медленно на обоих. Единственная общность, которую я заметил, заключается в том, что машины, на которых он работает медленно, кажутся машинами, использующими контроллеры SATA/RAID, и быстро работают на машинах со стандартным SATA. Все машины используют SSD-накопители.

В качестве примечания: я делаю то же самое, что и нить ниже, как часть моего эксперимента. У меня есть простая программа, которая вызывает CreateFile, а затем CloseHandle. Больше ничего не делает и работает очень медленно на некоторых машинах (4-7 мс CreateFile) и быстро на других, как описано выше. В следующей теме очень похожий вопрос, но на него никогда не было хорошего ответа.

Почему Windows так медленно открывает файлы в первый раз и есть ли более быстрый способ

Спасибо

рисует


person dgraves    schedule 24.08.2017    source источник
comment
Антивирусная программа?   -  person Harry Johnston    schedule 25.08.2017
comment
При первом открытии файла в диспетчере памяти/кэша и файловой системе выполняется дополнительная работа (например, выделение блока управления файлом/ссылкой и дескриптора безопасности), которую не обязательно повторять при закрытии и повторном открытии файла. в зависимости от дизайна и использования файловой системы. Но это не объясняет задержку до 7 мс. Обязательно попробуйте, отключив все сканеры вредоносных программ, как предложил @HarryJohnston.   -  person Eryk Sun    schedule 25.08.2017
comment
Антивирусное программное обеспечение не запущено. Также я только что обнаружил, что машины, на которых она работает медленно, не показывают эту проблему, если я запускаю программу в безопасном режиме.   -  person dgraves    schedule 25.08.2017


Ответы (1)


Так что я ошибся. У меня не было установлено какое-либо стороннее антивирусное программное обеспечение, однако Microsoft Security Essentials все еще был установлен. Это определенно проблема, и логично, что CreateFile будет работать медленнее, когда MSE работает. Поэтому, если у вас запущен MSE или Защитник Windows, это значительно замедлит CreateFile.

person dgraves    schedule 25.08.2017