Как сделать CreateFile максимально быстрым

Мне нужно прочитать содержимое нескольких тысяч маленьких файлов при запуске. В Linux просто использование fopen и чтение очень быстро. В Windows это происходит очень медленно.

Я переключился на использование перекрывающегося ввода-вывода (асинхронного ввода-вывода) с использованием ReadFileEx, где Windows выполняет обратный вызов, когда данные готовы для чтения.

Однако фактические тысячи вызовов самого CreateFile все еще являются узким местом. Обратите внимание, что я предоставляю свои собственные буферы, включаю флаг NO_BUFFERING, даю подсказку SERIAL и т. Д. Однако вызовы CreateFile занимают несколько десятков секунд, тогда как в linux все выполняется намного быстрее.

Можно ли что-нибудь сделать, чтобы эти файлы были готовы к более быстрому чтению?

Вызов CreateFile:

            hFile = CreateFile(szFullFileName,
                GENERIC_READ,
                FILE_SHARE_READ | FILE_SHARE_WRITE,
                NULL,
                OPEN_EXISTING,
                FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING | FILE_FLAG_SEQUENTIAL_SCAN,
                NULL);

Ответы на вопрос(2)

Ваш ответ на вопрос