Ich möchte die Leistung einer Funktion in Mikrosekundengenauigkeit auf der Windows-Plattform berechnen.
Nun hat Windows selbst eine Millisekunden-Granularität, wie kann ich das also erreichen?
Ich habe das folgende Beispiel ausprobiert, aber keine korrekten Ergebnisse erhalten.
LARGE_INTEGER ticksPerSecond = {0};
LARGE_INTEGER tick_1 = {0};
LARGE_INTEGER tick_2 = {0};
double uSec = 1000000;
// Get the frequency
QueryPerformanceFrequency(&ticksPerSecond);
//Calculate per uSec freq
double uFreq = ticksPerSecond.QuadPart/uSec;
// Get counter b4 start of op
QueryPerformanceCounter(&tick_1);
// The ope itself
Sleep(10);
// Get counter after opfinished
QueryPerformanceCounter(&tick_2);
// And now the op time in uSec
double diff = (tick_2.QuadPart/uFreq) - (tick_1.QuadPart/uFreq);