Ein kurzer Zwischenstand. Es sieht so aus, als wenn die Ursache in VirtualBox liegt. Im Anhang die Charts im direkten Vergleich.
- Linkes Chart: Auf dem PC mit Win10: Nur wenige ms Abweichung und QueryPerfom genauer als GetTickCount
- Rechtes Chart: In VirtualBox mit Win7: Zeiten schwanken zuerst und fangen dann an zu wandern
GetTickCount64 gibt es in XE noch nicht, sonst hätte ich es ausprobiert
Bleibt für mich noch die Frage, was stimmt denn jetzt auf VirtualBox am genausten?
Ich werde noch manuelle Test mit einer Stoppuhr und ClickButton machen
Der aktuelle Code:
Delphi-Quellcode:
procedure TForm7.btStartClick(Sender: TObject);
begin
iStartTickCount := GetTickCount;
iStartPerfCount := GetTickStart;
dtStartTime := now;
tiTest.Enabled := not tiTest.Enabled;
lsDelta.Clear;
end;
procedure TForm7.tiTestTimer(Sender: TObject);
var
dtDeltaTime: TDateTime;
iDeltaTickCount: Int64;
iDeltaPerfCount: Int64;
rDeltaSecTime, rDeltaSecTickCount, rDeltaSecPerfCount: Double;
begin
dtDeltaTime := now - dtStartTime;
iDeltaTickCount := GetTickCount - iStartTickCount;
iDeltaPerfCount := GetTickDelta(iStartPerfCount);
rDeltaSecTime := dtDeltaTime * 24 * 60 * 60;
rDeltaSecTickCount := iDeltaTickCount / 1000;
rDeltaSecPerfCount := iDeltaPerfCount / 1000;
lsDelta.Add(rDeltaSecTime - rDeltaSecTickCount);
lsDeltaQ.Add(rDeltaSecTime - rDeltaSecPerfCount);
end;
Damit die Ergebnisse zwischen altem und neuen Code vergleichbar sind, habe ich als Basis die Uhrzeit gelassen