[elektro-etc] Futásidő mérés WinXP alatt
Moczik Gabor
pm_levlista at progzmaster.hu
Fri Aug 8 13:02:22 CEST 2008
Famulus Számítástechnika wrote:
>> timer futaprogram.exe /parameterek
>
> Milyen pontossag kell ?
> WIN API alapon lehet akar nanosec is :-)
Ez az elmélet.
A gyakorlatban kicsit bugos a QueryPerformanceCounter, ugyanazok a hibák
megvannak benne mint az RDTSC utasításban. Minimum az alábbi csillagok
együttállása a probléma:
- Speedstep processzorral a QueryPerformanceCounter frekije is elmaszik, ha
pont váltás van
- SMP rendszerben nincsenek összehangolva a TSC-k, processzorváltásnál ugrás
fordulhat elő az időben
- ha beugrik egy taszkváltás akkor bukta van, mert lehet hogy nem pont akkor
kapod vissza a vezérlést amikor szeretnéd.
Ha ezek mind nem lennének, egy program tényleges futásási idejét nanosec
alapon akkor sem lehet megmérni így, a diszkről be is kell tölteni a kódot,
ennek ideje ismeretlen, és nehezen mérhető, következő futtatásnál lehet hogy
már a file cache-ből tölti...
Legfeljebb ha magába a programba teszel időmérést, akkor tudhatsz pontosan
mérni, de kétlem hogy többszöri futtatásra egyforma időt futna, mégha
ugyanazt csinálja is. A windows nem real-time operációs rendszer. (a linux
sem, mégmielőtt...)
Tehát szerintem ilyen külső méréshez bőven sok is a gettime() által adott
felbontás. Ha túl rövid a futásidő (mondjuk úgy 1-2-3 sec alatt), akkor a
programba integrálva lesz pontosabb a mérés.
--
((( Móczik Gábor )))--((( E~mail: "pm-01" @AT "progzmaster" .DOT "hu" )))
((( Skype: moczik )))
More information about the Elektro-etc
mailing list