Um den Zeitraffer in Go zu berechnen, können Sie
verwenden
start := time.Now() // long time consuming task duration := time.Since(start)
Aber wissen Sie, dass das Zeitpaket in Go tatsächlich zwei Zeiten enthält und time.Since() tatsächlich nur die Verarbeitungszeit (monotone Uhr) misst, nicht die Echtzeit (Wanduhr)?
Zum Beispiel, wenn die Aufgabe ziemlich lang ist, über Nacht dauert und Ihr Computer in den Ruhezustand wechselt. Dann können Sie am Morgen vorbeikommen und sehen, dass die Dauer nur 4 Stunden beträgt, während insgesamt 10 Stunden vergangen sind.
Das Zeitpaket in Go besagt, dass
Betriebssysteme bieten sowohl eine „Wanduhr“, die Änderungen zur Taktsynchronisierung unterliegt, als auch eine „monotone Uhr“, bei der dies nicht der Fall ist. Als allgemeine Regel gilt, dass die Wanduhr zum Anzeigen der Zeit und die monotone Uhr zum Messen der Zeit dient.
Was Ihnen in unserem obigen Beispiel wirklich gesagt wird, ist, dass Ihr Programm 4 Stunden lang aktiv ausgeführt wurde, der Computer jedoch 6 Stunden im Ruhezustand war, sodass Sie insgesamt 10 Stunden gewartet haben. Wenn der Computer nicht geschlafen hätte, wäre es in 4 Stunden erledigt.
Was also tun, wenn Sie die Wandzeit messen möchten? Sie können die Funktion Round(0) verwenden. t = t.Round(0) entfernt den monotonen Takt in t.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3