Para calcular el lapso de tiempo en Go, puedes usar
start := time.Now() // long time consuming task duration := time.Since(start)
Pero ¿sabías que el paquete de tiempo en Go en realidad tiene dos tiempos, y time.Since() en realidad mide solo el tiempo de procesamiento (reloj monótono), no el tiempo real (reloj de pared)?
Por ejemplo, si la tarea es bastante larga, dura toda la noche y tu computadora entra en modo de suspensión. Luego, en la mañana, podrás venir y ver que la duración duró solo 4 horas, mientras que en total habían pasado 10 horas.
El paquete de tiempo en Go indica que
Los sistemas operativos proporcionan tanto un “reloj de pared”, que está sujeto a cambios para la sincronización del reloj, como un “reloj monótono”, que no lo está. La regla general es que el reloj de pared sirve para dar la hora y el reloj monótono es para medir el tiempo.
Lo que realmente le dice en nuestro ejemplo anterior es que su programa se ejecutó activamente durante 4 horas, pero la computadora duerme 6 horas, por lo que en total esperó 10 horas. Si la computadora no hubiera dormido, estaría listo en 4 horas.
Entonces, ¿qué hacer si quieres medir el tiempo en la pared? Puede utilizar la función Ronda(0). t = t.Round(0) eliminará el reloj monótono en t.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3