Por que as leituras subseqüentes de um arquivo de vários gigabytes são executadas mais rapidamente?

0

Eu tenho algum software de teste de algoritmo sendo executado em uma máquina com Windows 7 que, quando executado pela primeira vez em qualquer arquivo de dados, é executado de 3 a 5 vezes mais lento do que em execuções subseqüentes. Nosso algoritmo simplesmente lê o arquivo com algumas centenas de bytes por vez e grava um resultado de volta para cada operação de 50 leituras.

Existe algum cache inerente em algum lugar no Windows (parece improvável com um arquivo de 3GB?) ou outra coisa? Existe alguma maneira de acelerar essa primeira execução?

    
por Jon Cage 29.01.2014 / 11:19

1 resposta

2

Is there some inherent caching somewhere in Windows (seems unlikely with a 3GB file?)

Sim, O Windows tem um cache que pode ser responsável por isso .

De acordo com o artigo do MSDN vinculado, você pode desabilitar o armazenamento em cache de um determinado arquivo com o sinalizador FILE_FLAG_NO_BUFFERING na chamada CreateFile. Se você não puder alterar o código, poderá usar o aplicativo SysInternals RAMMap para redefinir o código cache entre execuções de benchmark.

Veja esta postagem relacionada no SO para obter detalhes .

    
por 29.01.2014 / 17:50