| |
|
|
p.specht
| Die API-Funktionen QueryPerformanceCounter() verwendet 64-Bit-unsigned Integers. In XProfan11 gab´s die noch nicht. Nachstehende Bastelei sollte da abhelfen - das KANN klappen oder Müll sein, keine Ahnung! Ohne jede Gewähr:
Windowtitle "CPU Performance Counters z.B. per Benchmark Tests auslesen (ab Profan 9 unter XP)"
Declare Frequenz&[1],Start&[1],Ende&[1],Test&[1]
Declare Frequenz!,Start!,Ende!,Test!,Sekunden!,Durchläufe&
Def QueryPerformanceFrequency(1), !"Kernel32", "QueryPerformanceFrequency"
Def QueryPerformanceCounter(1) !"Kernel32", "QueryPerformanceCounter"
QueryPerformanceFrequency(Addr(Frequenz&[0]))
CLS:Font 2:Sleep 500
Frequenz! = if(Frequenz&[1]<0,Frequenz&[1]+2^32,Frequenz&[1])*2^32 + \
if(Frequenz&[0]<0,Frequenz&[0]+2^32,Frequenz&[0])
print "\n\n CPU-Frequenz: ";Frequenz!*10^-6;" [GHz]"
print "\n-----------------------------------------------------------"
Durchläufe&=2*10^6
print "\n Test gestartet per ";format$("###,###,###,###",Durchläufe&);" Durchläufe..."
'-------------------------------------------------------------------
QueryPerformanceCounter(Addr(Start&[0]))
WhileLoop Durchläufe&
'
' HIER KOMMT DER ZU BENCHMARKENDE PROGRAMMTEIL REIN!!!
'
EndWhile
QueryPerformanceCounter(Addr(Ende&[0]))
'-------------------------------------------------------------------
Ende! = if(Ende&[1]<0,Ende&[1]+2^32,Ende&[1])*2^32+if(Ende&[0]<0,Ende&[0]+2^32,Ende&[0])
Start! = if(Start&[1]<0,Start&[1]+2^32,Start&[1])*2^32+if(Start&[0]<0,Start&[0]+2^32,Start&[0])
print "\n-----------------------------------------------------------"
beep:print " Test beendet."
Test!=Ende!-Start!:Sekunden! = Test!/Frequenz!
Print "\n\n Gesamtdauer: ";format$("%g",Sekunden!);" Sekunden"
Print "\n Dauer je Durchlauf: ";format$("%g",10^6*Sekunden!/Durchläufe&);" Mikrosekunden"
Print "\n Das entspricht rund ";format$("###,###,##0",Durchläufe&/Sekunden!);" Durchläufen pro Sekunde."
print "\n-----------------------------------------------------------"
Print "\n\n Beenden mit Tastendruck!"
WaitInput 1000*60*5
End
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 11.05.2021 ▲ |
|
|
|