Когда я пишу лексер, я хочу избежать как можно большего количества выделений, поэтому я начну с получения размера файла, чтобы выделить кучу токенов на основе heuristi c. Делая это, я спрашивал себя, может ли ядро Windows получить размер файла с GetFileSizeEx, не читая его полностью, что добавит задержку, прежде чем я смогу начать lexing?
Файловая система начинает заполнить кэш памяти сразу, когда дескриптор файла открыт? Потому что GetFileSizeEx нужен открытый файл.
И после того, как я рассматриваю чтение моего файла асинхронно с ReadFileScatter или ReadFileEx. Но я не могу понять, в чем реальная разница между этими функциями, так как ReadFileEx можно использовать с двойной буферизацией, чтобы можно было преобразовывать фрагмент, когда следующий заполнен в фоновом режиме.
Кажется, что ReadFileScatter быть немного более сложным в использовании, так как чанки должны быть предварительно выделены с начала, с памятью, выровненной по системным страницам. Кто-нибудь знает, почему это так?
Как насчет функций FileMapping, это может быть интересно для моей цели?
PS: файлы будут открыты в течение всего срока службы приложения.