Hy,
ich sollte für ein kleines Benchmark-tool möglichst gut die verbrauchte Zeit für eine Operation herausfiltern;
Weiß jmd. vielleicht eine Methode/Bibliothek?
Bin für alle Tips dankbar…
MfG
Ingo
Hy,
ich sollte für ein kleines Benchmark-tool möglichst gut die verbrauchte Zeit für eine Operation herausfiltern;
Weiß jmd. vielleicht eine Methode/Bibliothek?
Bin für alle Tips dankbar…
MfG
Ingo
Hi Ingo,
dafür gibts die Function GetTickCount in der kernel32.dll
Rückgabe ist ein DWord der die Anzahl millisekunden seit Windowsstart zurückgibt.
Die Differenz zwischen dem Aufruf vor und nach Deiner Operation ist die verbrauchte Zeit dieser Operation.
Der Überlauf ist nach ca. 47 Tagen.
Wie Du diese Function in C implemetieren mußt, kann ich Dir nicht sagen; ich kann´s nur in Delphi.
Servus,
Manfred
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Ich hatte sowas mal implementiert, weiss aber nicht mehr so genau wie das funktioniert hat.
Interessant erscheint ftime() aus sys/timeb.h und auch gettimeofday() evtl.
MfG
Bruno
dafür gibts die Function GetTickCount in
der kernel32.dll
Das setzt natürlich die Win32-API voraus.
Dann würd ich noch einen Schritt weitergehen und QueryPerformanceCounter und QueryPerformanceFrequency verwenden, sofern man einen Pentium oder etwas besseres als Prozessor hat. Dies ist dann die genaueste Meßmethode, die Prozessoren zur Verfügung stellen.
Die vergangene Zeit in Sekunden kann wie folgt berechnet werden:
#include
#include
void main()
{
LARGE\_INTEGER iFirst,iSecond,iFreq;
if (!QueryPerformanceFrequency(&iFreq))
{
printf("No performance counters.\n");
return;
}
printf("Performance Counter Frequency: %10d\n",iFreq.QuadPart);
if (!QueryPerformanceCounter(&iFirst))
{
printf("No performance counters.\n");
return;
}
Sleep(1234);
if (!QueryPerformanceCounter(&iSecond))
{
printf("No performance counters.\n");
return;
}
printf("First Performance Counter : %10d\n",iFirst.QuadPart);
printf("Second Performance Counter : %10d\n",iSecond.QuadPart);
printf("Difference : %10d\n",iSecond.QuadPart-iFirst.QuadPart);
printf("Difference in s : %10.7f\n",double(iSecond.QuadPart-iFirst.QuadPart)/iFreq.QuadPart);
}