Para calcular o lapso de tempo no Go, você pode usar
start := time.Now() // long time consuming task duration := time.Since(start)
Mas você sabia que o pacote de tempo em Go, na verdade, contém dois tempos, e time.Since() na verdade mede apenas o tempo de processamento (relógio monotônico), não o tempo real (relógio de parede)?
Por exemplo, se a tarefa for muito longa, durante a noite e seu computador entrar no modo de suspensão. Então, pela manhã, você pode vir e ver que a duração durou apenas 4 horas, enquanto no total já se passaram 10 horas.
O pacote de tempo em Go afirma que
Os sistemas operacionais fornecem um “relógio de parede”, que está sujeito a alterações para sincronização do relógio, e um “relógio monotônico”, que não está. A regra geral é que o relógio de parede serve para contar as horas e o relógio monotônico serve para medir o tempo.
O que isso realmente diz em nosso exemplo acima é que seu programa funcionou ativamente por 4 horas, mas o computador dormiu 6 horas, então no total você esperou 10 horas. Se o computador não tivesse dormido, isso seria feito em 4 horas.
Então, o que fazer se quiser medir o tempo de parede? Você pode usar a função Round(0). t = t.Round(0) removerá o relógio monotônico em t.
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