Ich häng mich hier mal hintendran, weil ich dasselbe Problem habe, und gerade damit nicht weiterkomme. Ich möchte bestimmen, wieviel Zeit eine Berechnung benötigt, und QueryPerformanceCounter scheint nicht auszureichen (da gibts manchmal Ausreißer, die ich mir nur dadurch erklären kann, dass ein anderer Prozess gerade rumgewerkelt hat). Mein Code sieht so aus:
Delphi-Quellcode:
function GetUsageTime: Int64;
var
fCreationTime, fExitTime: TFileTime;
fKernelTime, fUserTime: TFileTime;
UserTime64, KernelTime64: _Large_Integer;
begin
GetProcessTimes(GetCurrentProcess, fCreationTime, fExitTime, fKernelTime, fUserTime);
KernelTime64.LowPart := fKernelTime.dwLowDateTime;
KernelTime64.HighPart := fKernelTime.dwHighDateTime;
UserTime64.LowPart := fUserTime.dwLowDateTime;
UserTime64.HighPart := fUserTime.dwHighDateTime;
result := KernelTime64.QuadPart + UserTime64.QuadPart;
end;
Function GetAlgorithmTime: Int64;
var s,e: Int64;
begin
s := GetUsageTime; // Zeit nehmen
DoAlgorithm; // Berechnung ausführen
e := GetUsageTime; // Zeit nehmen
result := e-s; // Differenz ist das Ergbnis
end;
Aber dabei kommen unsinnige Werte bei raus - sehr oft 0, und ab und zu andere Werte, aber dann recht oft derselbe (oder sogar immer). Irgendwas ist also falsch. Oder geh ich die Sache komplett falsch an?