Hallo zusammen
kann mir jemand sagen wie sich dieser Wert errechnet.
[autoit]$begin = TimerInit()
ConsoleWrite("Wert Zeit:" & $begin & @CRLF)
Sind das Millisekunden und wenn ja, ab welchem Zeitpunkt wird gerechnet?
Hallo zusammen
kann mir jemand sagen wie sich dieser Wert errechnet.
[autoit]$begin = TimerInit()
ConsoleWrite("Wert Zeit:" & $begin & @CRLF)
Sind das Millisekunden und wenn ja, ab welchem Zeitpunkt wird gerechnet?
Ja das sind Millisekunden, und mit TimerDiff($begin) kannst du auch die Zeitdifferenz seit dem Aufruf von $begin = TimerInit() errechnen ;).
Wenn ich den Wert anzeigen lassen so kommt als Ergebnis: 50213467295
Ab welchem Zeitpunkt (Datum Uhrzeit) wird gerechnet? Wie kommt dieses Ergebnis zustande?
$begin = TimerInit()
ConsoleWrite("Wert Zeit:" & $begin & @CRLF)
Das was du dir anzeigen lässt ist NICHT der Zeitunterscheid zwischen dem Aufruf von TimerInit und dem Aufruf der Variable. Du rufst das Handle ab. Um den Zeitunterschied zu bekommen, musst du TimerDiff benutzen wie name22 schon schrieb.
Hallo,
da irrt die Hilfe, zumindest auf meinen Rechnern sind es keine Millisekunden, sondern ein Wert, der mit QueryPerformanceCounter() ausgelesen wird. Wären es Millisekunden, gäbe es bei TimerDiff() keine Nachkommastellen. ![]()
Frohe Weihnachten!
Wieso gäbe es dann keine Nachkommastellen?
Und wenn es nicht die Millisekunden sind, wieso stimmt es dann immer sehr genau mit den Millisekunden überein?
Hallo zusammen
mich interessiert der Wert welcher der Handle zurückgibt. Wie errechnet sich dieser Wert?
Zitatmich interessiert der Wert welcher der Handle zurückgibt
Der Handle gibt keinen Wert zurück... TimerInit gibt eine Zeitmarke zurück, also die bisherige Laufzeit in Millisekunden. Und TimerDiff ist im Prinzip nichts anderes als TimerInit() - $begin.
Wieso gäbe es dann keine Nachkommastellen?
Wie sollen denn Nachkommastellen entstehen, wenn man die Differenz zwischen zwei Werten in Millisekunden bildet und als Ergebnis Millisekunden ausgibt?
Und wenn es nicht die Millisekunden sind, wieso stimmt es dann immer sehr genau mit den Millisekunden überein?
Weil auch noch das Ergebnis von QueryPerformanceFrequency() in die Berechnung einfließt.
Pfroes Pfescht!
Also ich weiß nicht ab welchem zeitpunkt genau TimerInit zählt aber in Java geben die Time Funktionen die Zeit in Millis seit dem 1.1.1970 um 0 uhr zurück
Um mal alle Klarheiten zu beseitigen:
Die Zeitmessung erfolgt auf PC´s grösstenteils mit dem Befehl RDTSC (Read Time Stamp Counter), welcher in den Registern EDX:EAX (also insgesamt 64 Bit) die Anzahl der Prozessortakte seit dem Rechnerstart zurückgibt.
Da nun bei jedem Rechner der Prozessortakt unterschiedlich (aber bekannt) ist, wird dieser Wert mittels einer Funktion in Millisekunden umgerechnet.
timerinit() gibt also die Takte seit dem Rechnerstart an.
Timerdiff() macht nun nichts anderes, als die Differenz zu bilden zwischen dem aktuellen und dem vorher per timerinit() gespeicherten Wert und rechnet diesen in Millisekunden um
Ich habe mal versucht die Tage auszurechnen. Ich bekomme als Ergebnis: 704.836619965278 Tage.
Kann es sein dass es ca. 704 Tage sind.
$begin = TimerInit()
ConsoleWrite("Wert Zeit:" & $begin & @CRLF)
$tmp = 60 * 60 * 24 * 1000 ; 60 Sekunde * 60 Minuten ergibt 1 Stunde * 24 Stunden ergibt 1 Tag * 1000 Milisek.
ConsoleWrite($begin / $tmp & @CRLF)
sry, hatte mich im vorigen Post verschrieben.
In timerinit() werden die Takte seit dem Rechnerstart (oder Überlauf der Register) gezählt, und dann bei timerdiff() die Differenz in Millisekunden berechnet.
Es kann auch sein, dass der Uhrenbaustein auf dem Mainboard ausgelesen wird. Da das extrem lange dauert (nicht für eine genaue Zeitmessung geeignet) wird idR nur beim Rechnerstart ausgelesen nach EDX:EAX und dann wie schon beschrieben die Anzahl der Takte gezählt.
Daher kann es unter Umständen beim Übertakten vorkommen, dass die WINDOWSUHR vorgeht! Denn auch diese bezieht ihre Zeit ja irgendwoher. Auch Spiele, welche ziemlich nah an der Hardware programmiert sind, können die Uhrenbausteine beeinflussen.
danke für die Info's