Maison >développement back-end >Golang >Comment mesurer le temps d'exécution d'une fonction en Go à l'aide de la fonction de report ?

Comment mesurer le temps d'exécution d'une fonction en Go à l'aide de la fonction de report ?

DDD
DDDoriginal
2024-11-17 09:12:03431parcourir

How to Measure Function Runtime in Go Using the Defer Feature?

Mesure du temps d'exécution d'une fonction dans Go

Dans Go, un moyen simple de mesurer le temps d'exécution d'une fonction consiste à tirer parti de la fonction de report.

Implémentation

  1. Définissez les fonctions d'assistance suivantes :
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))
}
  1. Utilisez ces fonctions dans la fonction cible :
func someFunction() {
    defer un(trace("SOME_ARBITRARY_STRING_SO_YOU_CAN_KEEP_TRACK"))

    // Perform the function's intended operations here...
}

Explication

  • La fonction trace() est appelée au début de la fonction et renvoie le nom de la fonction et le courant time.
  • L'instruction defer un diffère l'exécution de un() jusqu'à la fin de la fonction.
  • Lorsque un() est exécuté, elle calcule le temps écoulé en utilisant la différence entre le temps actuel l'heure et l'heure de début obtenues à partir de trace().
  • L'heure est enregistrée en millisecondes.

Remarque :

  • Cette approche n'est pas précise par rapport à l'horloge atomique en raison des instructions de journalisation. Pour un timing plus précis, pensez à utiliser des outils de profilage spécifiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn