Tempo de execução da função de criação de perfil em Go: uma abordagem diferida de precisão
No domínio da otimização de software, medir o tempo de execução da função pode fornecer insights valiosos para melhorando a eficiência. Go, uma linguagem de programação robusta, oferece um mecanismo conveniente para cronometrar funções e retornar seu tempo de execução em milissegundos.
A função medida pelo tempo
Para iniciar nossa aventura, vamos crie uma função que queremos criar o perfil. Este exemplo simplesmente dorme por um período especificado:
func SleepFor(d time.Duration) { time.Sleep(d) }
Go's Defer Advantage
A palavra-chave defer de Go prova ser fundamental nesse esforço. Ao adiar a execução de uma função até que a função envolvente termine, podemos medir o tempo decorrido entre a chamada da função e sua execução real.
Código de medição de tempo
Vamos introduza duas funções auxiliares, apropriadamente denominadas trace e un. Trace registra o ponto de entrada da função e captura o horário de início, enquanto desfaz o registro do ponto de saída e calcula o tempo decorrido em 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)) }
Implementando o tempo
Agora, vamos incorporar essas funções auxiliares em nossa função SleepFor:
func profileSleep(d time.Duration) { defer un(trace("SleepFor")) SleepFor(d) }
Squeaky Clean Results
Com esta implementação elegante, obtemos registros de tempo decorrido concisos para cada chamada de função:
START: profileSleep END: profileSleep ElapsedTime in seconds: 0.50044
Considerações sobre precisão
Embora os registros forneçam tempos decorridos precisos, é importante notar que as próprias instruções de registro apresentam uma ligeira imprecisão. Se for necessária maior precisão, considere um mecanismo de temporização alternativo.
Conclusão
Aproveitar o adiamento do Go torna as funções de temporização e a obtenção de seu tempo de execução em milissegundos muito fácil. Essa técnica poderosa permite insights sobre o desempenho do código, abrindo caminho para otimizações para melhorar a eficiência de seus aplicativos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3