Mesurer le temps d'exécution d'une fonction en Go avec une précision à la milliseconde
L'un des défis de Go est de déterminer le temps d'exécution d'une fonction et de le signaler dans millisecondes.
Solution : tirer parti de Go defer
L'instruction defer de Go fournit une solution pratique pour les fonctions de synchronisation. Voici comment y parvenir :
Étape 1 : Définir les fonctions utilitaires
Définissez les fonctions utilitaires suivantes dans Go 1.x :
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)) }
Étape 2 : Chronométrez votre fonction
Pour chronométrer une fonction nommée someFunction, enveloppez-le avec les appels trace() et un() comme suit :
func someFunction() { defer un(trace("SOME_ARBITRARY_STRING_SO_YOU_CAN_KEEP_TRACK")) // Do your function logic here }
Explication
La fonction trace() est appelée au début de la fonction , en enregistrant l'heure de début. La fonction un() est reportée à la fin de la fonction, mesurant le temps écoulé et l'imprimant dans le journal avec une précision de la milliseconde.
Personnalisation de la mesure du temps
Ceci La technique peut être modifiée pour mesurer d'autres unités de temps telles que les nanosecondes ou les microsecondes en ajustant le calcul endTime.Sub(startTime).
Par en tirant parti de l'instruction defer de Go, vous pouvez mesurer facilement et avec précision les temps d'exécution des fonctions en millisecondes, fournissant ainsi des informations précieuses pour l'optimisation des performances.
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!