[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