OVH Cloud OVH Cloud

Vider le cache

2 réponses
Avatar
PurL
Salut,

Un de mes prog manipule les données d'un fichier bianire.
J'essai les différentes manières pour voir laquelle est la plus rapide.
Le probleme est que lorsque windows à déjà "joué" avec un fichier, l'accès
est beaucoup plus rapide, ce qui fausse mes tests.
J'imagine que cela est du au fait que le fichier est en cache.
Comment empecher windows de mettre le fichier en cache ou comment vider le
cache. Plus généralement, quelles précautions prendre pour qu"un meme
traitement d'un fichier prenne exactement le meme temps deux executions de
suite ?

Merci,

PurL

2 réponses

Avatar
Aurelien Regat-Barrel
> Un de mes prog manipule les données d'un fichier bianire.
J'essai les différentes manières pour voir laquelle est la plus rapide.
Le probleme est que lorsque windows à déjà "joué" avec un fichier, l'accès
est beaucoup plus rapide, ce qui fausse mes tests.
J'imagine que cela est du au fait que le fichier est en cache.
Comment empecher windows de mettre le fichier en cache ou comment vider le
cache. Plus généralement, quelles précautions prendre pour qu"un meme
traitement d'un fichier prenne exactement le meme temps deux executions de
suite ?



Je suis pas sûr que ce soit un problème de programmation, sauf à
modifier ton code de lecture (CreateFile( ..., FILE_FLAG_NO_BUFFERING,
... ) + lecture % 512 ).
Une solution simple c'est d'éxécuter 2 fois de suite ton programme, ou
de ne chronométrer que la portion intéressante...

--
Aurélien Regat-Barrel
Avatar
Gilles Vollant
Je pense aussi que la solution est soit de mesurer le temps d'execution
uniquement une fois que le fichier est déjà dans le cache, soit d'utiliser
FILE_FLAG_NO_BUFFERING

juste un lien au sujet du cache
http://www.sysinternals.com/utilities/cacheset.html

je ne suis pas sur que cela soit la réponse, mais c'est toujours
interessant... :-)