Problem mit Sleep() Timerdiff()

  • Hallo Leute,

    habe auf meinem System ein interessantes Problem gefunden...

    - Auf meinem System dauert ein Sleep(1000) ca. 500ms
    - TimerDiff ist ca. 50% langsamer als eine echte Uhr.... wenn ich 60Sekunden warte, erzählt mir Timerdiff() ca. 30 Sekunden


    Wenn ich ich meinen TaskManager schaue, dann zählt dieser die Sekunden auch im Doppeltakt, also pro Sekunde zählt dieser 2 Sekunden.

    Liegt das alles an dem Dual-Core?
    Kann doch nicht wirklich sein oder???

    Hat jemand von euch auch dieses "Problem"

  • die normale Systemuhr läuft normal...


    [autoit]


    Local $timer=TimerInit()
    _zeit()
    Sleep(5000)
    _zeit()
    ConsoleWrite(TimerDiff($timer)&" milliseconds"&@CRLF)

    [/autoit][autoit][/autoit][autoit]

    local $dll=DllOpen("kernel32.dll")
    $timer=TimerInit()
    _zeit()
    DllCall($dll,"none","Sleep","dword",5000)
    _zeit()
    ConsoleWrite(TimerDiff($timer)&" milliseconds"&@CRLF)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _zeit()
    ConsoleWrite(@MIN & ":" & @SEC & @CRLF)
    EndFunc

    [/autoit]


    Ausgabe bei mir:

    Code
    46:48
    46:53
    2530.56904513466 milliseconds
    46:53
    46:58
    2588.87924852235 milliseconds

    Also die Sleep()-Zeit passt, allerdings die Timerdiff()-zeit nicht....

  • hier läuft bei mir die zeit auch fast konstant um den Faktor zwei auseinander....

    [autoit]


    $timer=TimerInit()
    $StartSec = @SEC
    While 1
    Sleep(1000)
    ToolTip(Int(TimerDiff($timer)/1000) & @CRLF & @SEC-$StartSec)
    WEnd

    [/autoit]
  • wie kann das denn angehen...

    mit

    [autoit]


    $timer=TimerInit()
    While 1
    ToolTip(Int(TimerDiff($timer)/1000)
    WEnd

    [/autoit]


    läuft die Zeit ziemlich normal, aber eine Core 100% Last


    [autoit]


    $timer=TimerInit()
    While 1
    Sleep(1000)
    ToolTip(Int(TimerDiff($timer)/1000)
    Wend

    [/autoit]

    läuft die Zeit nur noch halb so schnell und die Core hat auch nichts mehr zu tun.


    Ich dachte, das TimerInit() einen Zeitstempel und TimerDiff() die Differenz zu dem Zeitstempel zurück gibt.
    Wieso läuft die Zeit gut, wenn die Core beschäftigt ist und wenn man diese mit Sleep() "schont" die Zeit-Taktung gebremst wird?

    • Offizieller Beitrag

    Das kann ich nicht bestätigen. Bei mir läuft das einwandfrei immer 5 sekunden (Abweichung im Millisekundenbereich).

    Code
    52:38
    5003.60636563408 milliseconds
    52:43
    52:43
    5009.0251777003 milliseconds
    52:48

    hab das Skript noch etwas angepasst, um wirklich nur die Sleepzeit zu messen:

    Spoiler anzeigen
    [autoit]


    _zeit()
    $timer=TimerInit()
    Sleep(5000)
    ConsoleWrite(TimerDiff($timer)&" milliseconds"&@CRLF)
    _zeit()

    [/autoit] [autoit][/autoit] [autoit]

    $dll=DllOpen("kernel32.dll")
    _zeit()
    $timer=TimerInit()
    DllCall($dll,"none","Sleep","dword",5000)
    ConsoleWrite(TimerDiff($timer)&" milliseconds"&@CRLF)
    _zeit()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _zeit()
    ConsoleWrite(@MIN & ":" & @SEC & @CRLF)
    EndFunc

    [/autoit]
  • Vor ca. 3 Jahren habe ich an meinem alten PC (1 Kern, 32bit) mit TimerInit rumgespielt und die Werte stimmten nicht mit der Systemzeit überein. Ich weiss leider nicht mehr ob es zu schnell oder zu langsam gelaufen ist. Naja seitdem habe ich die Funktion nicht mehr benutzt. Jetzt funktioniert sie bei mir einwandfrei. Ob es an der neuen PC-Konfiguration liegt, an der neuen Windows-Installation oder einfach an der neuen AutoIt-Version? Keine Ahnung.

  • Das wird dir wohl kaum helfen aber es kann sein das deine Interne Uhr im PC (nicht windoof uhr sondern die hardware) fehlerhaft ist, hatte ich mal bei einem Kunden auch.
    Ich würd jetzt schauen wie weit es auseinander ist und ob es zufällige unterschiede sind, wenn es nicht zufällige unterschiede sind kannst du ja einen kleinen fix basteln ;)

  • leider läuft meine Systemuhr im BIOS auch normal schnell...

    Ich habe Zuhause auf meinen anderen 3 Rechner das Problem nicht fest stellen können...
    Werde mal ein älteres Image auf spielen und schauen ob es an Windows liegt...

  • May,...es gibt Tage da halten Kartoffeln länger wenn man sie erntet.
    Der Mond beweinflusst eben auch die Computer :rofl: :rofl: