Profiling Function Runtime in Go : une approche différée de précision
Dans le domaine de l'optimisation logicielle, mesurer le temps d'exécution des fonctions peut fournir des informations précieuses pour améliorer l'efficacité. Go, un langage de programmation robuste, offre un mécanisme pratique pour chronométrer les fonctions et renvoyer leur durée d'exécution en millisecondes.
La fonction mesurée dans le temps
Pour lancer notre aventure, commençons créer une fonction que nous voulons profiler. Cet exemple dort simplement pendant une durée spécifiée :
func SleepFor(d time.Duration) { time.Sleep(d) }
L'avantage Defer de Go
Le mot-clé defer de Go s'avère déterminant dans cette entreprise. En différant l'exécution d'une fonction jusqu'à la sortie de la fonction englobante, nous pouvons mesurer le temps écoulé entre l'appel de la fonction et son exécution réelle.
Code de mesure du temps
Voyons introduisez deux fonctions d'assistance, bien nommées trace et un. Trace enregistre le point d'entrée de la fonction et capture l'heure de début, tandis que non enregistre le point de sortie et calcule le temps écoulé en secondes.
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)) }
Implémentation du timing
Maintenant, intégrons ces fonctions d'assistance dans notre fonction SleepFor :
func profileSleep(d time.Duration) { defer un(trace("SleepFor")) SleepFor(d) }
Résultats impeccables
Avec cette implémentation élégante, nous obtenons des journaux concis du temps écoulé pour chaque appel de fonction :
START: profileSleep END: profileSleep ElapsedTime in seconds: 0.50044
Considérations relatives à la précision
Bien que les journaux fournissent des temps écoulés précis, il convient de noter que les instructions de journalisation elles-mêmes introduisent une légère inexactitude. Si une plus grande précision est requise, envisagez un mécanisme de synchronisation alternatif.
Conclusion
Exploiter le report de Go facilite les fonctions de synchronisation et l'obtention de leur durée d'exécution en millisecondes. Cette technique puissante permet d'obtenir un aperçu des performances du code, ouvrant la voie à des optimisations pour améliorer l'efficacité de vos applications.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3