Tiempo de ejecución de la función de creación de perfiles en marcha: un enfoque diferido de precisión
En el ámbito de la optimización del software, medir el tiempo de ejecución de la función puede proporcionar información valiosa para mejorando la eficiencia. Go, un lenguaje de programación robusto, ofrece un mecanismo conveniente para cronometrar funciones y devolver su tiempo de ejecución en milisegundos.
La función de medición del tiempo
Para comenzar nuestra aventura, comencemos crear una función que queremos perfilar. Este ejemplo simplemente duerme durante una duración específica:
func SleepFor(d time.Duration) { time.Sleep(d) }
Ventaja de aplazamiento de Go
La palabra clave aplazar de Go resulta fundamental en este esfuerzo. Al diferir la ejecución de una función hasta que salga la función adjunta, podemos medir el tiempo transcurrido entre la llamada a la función y su ejecución real.
Código de medición de tiempo
Vamos a introduzca dos funciones auxiliares, acertadamente denominadas trace y un. Trace registra el punto de entrada de la función y captura la hora de inicio, mientras que desbloquea el punto de salida y calcula el tiempo transcurrido en segundos.
func trace(s string) (string, time.Time) { log.Println("START:", s) return s, time.Now() } func un(s string, startTime time.Time) { endTime := time.Now() log.Println(" END:", s, "ElapsedTime in seconds:", endTime.Sub(startTime)) }
Implementación de sincronización
Ahora, incorporemos estas funciones auxiliares en nuestra función SleepFor:
func profileSleep(d time.Duration) { defer un(trace("SleepFor")) SleepFor(d) }
Resultados absolutamente limpios
Con esta elegante implementación, obtenemos registros de tiempo transcurrido concisos para cada llamada de función:
START: profileSleep END: profileSleep ElapsedTime in seconds: 0.50044
Consideraciones de precisión
Si bien los registros proporcionan tiempos transcurridos precisos, vale la pena señalar que las declaraciones de registro en sí mismas introducen una ligera inexactitud. Si se requiere una mayor precisión, considere un mecanismo de sincronización alternativo.
Conclusión
Aprovechar el aplazamiento de Go hace que las funciones de sincronización y la obtención de su tiempo de ejecución en milisegundos sean muy sencillas. Esta poderosa técnica permite obtener información sobre el rendimiento del código, allanando el camino para optimizaciones que mejoren la eficiencia de sus aplicaciones.
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