... ben oui en divisant le nombre de boucles par 10 on obtient forcément des temps et des écarts de mesures divisés par 10.
Je me suis mal exprimé, ça c'est mathématique, en fait je voulais parler de l'incertitude relative.
... dans ce cas ça m'affiche généralement 0 ms ...
C'est le problème avec GetTickCount. Il faut avoir consience de la résolution de 15 ms du timer (malgré le fait que le résultat est en millisecondes) sinon on a vite fait d'en conclure que les perfs sont excelentes.
Et puis comme je fais fréquemment des tests il se trouve en plus que, la flamme aidant, avec Start:=getTickCount; puis edMis.text:='mis : '+intToStr(getTickCount - Start)+' ms'; le code est bouclé avec seulement deux lignes, et même le choix de l'Edit "edMis" résulte de cette flemme car au moins avec un TEdit on peut faire un copier-coller pour transférer le résultat de la mesure ailleurs ... ergonomie bien ordonnée commence par soi-même. Non ?
On est d'accord, on est tous de gros flémards. Je faisais la même chose jusqu'à ce que je découvre Event Tracing for Windows :
http://fsoriano.developpez.com/articles/etw/delphi/
Maintenant, j'instrumente directement l'application qui contient le code à optimiser. Au début du traitement j'ajoute la ligne :
GenericLogger.TraceBegin(EVENT_START, 'Début du traitement', currentTime);
à la fin du traitement j'ajoute :
GenericLogger.TraceEnd(EVENT_END, 'Fin du traitement', currentTime);
Puis je démarre la trace et je lance l'appli. Et j'obtiens la durée du traitement directement dans la trace. Et comme je fais ça un peu partout dans l'appli, j'ai également le profil d'exécution de l'appli complète...
Partager