Maison >développement back-end >Golang >Comment puis-je utiliser le cadre de test de Go pour l'analyse comparative de mon code?
Le package de tests intégré de Go fournit un mécanisme puissant et simple pour le code comparateur. Les références sont des fonctions qui utilisent le type test.b
, qui fournit des méthodes pour synchroniser l'exécution de votre code et signaler les résultats. Pour créer une référence, vous écrivez une fonction qui prend un * test.b
comme argument. Le type test.b
fournit un champ bn
, qui représente le nombre de fois où la fonction de référence doit être exécutée. La valeur bn
est automatiquement ajustée par la commande go test
pour trouver un résultat statistiquement significatif. Dans la fonction de référence, vous utilisez généralement une boucle qui itère bn
fois, exécutant le code que vous souhaitez comparer.
Voici un exemple simple:
<code class="go"> package mypackage import & quot; test & quot; func add (x, y int) int {return xy} func benchmarkadd (b * test.b) {pour i: = 0; je & lt; BN; i {add (1, 2)}} </code>
Pour exécuter ce benchmark, vous l'enregistreriez dans un fichier nommé mypackage_test.go
puis exécutez la commande go test -bench =.
. Cela exécutera toutes les fonctions de référence dans le package.
La rédaction de repères efficaces nécessite une attention particulière pour garantir la précision et la fiabilité. Voici quelques meilleures pratiques clés:
go test
exécute plusieurs fois les références pour réduire l'impact des variations aléatoires des performances du système. Assurez-vous que vos repères sont exécutés suffisamment de fois pour obtenir des résultats statistiquement significatifs. Vous pouvez utiliser l'indicateur -Count
pour spécifier le nombre d'itérations. La sortie d'un go test -bench =.
La commande fournit une rupture détaillée des résultats de référence. La sortie montre généralement le nom de référence, le nombre d'itérations ( n
), le temps total pris et le temps par itération (souvent exprimé en nanosecondes). Par exemple:
<code> benchmarkadd-8 1000000000 0,20 ns / op </code>
Cette ligne indique que la fonction benchmarkadd
a été exécutée 1 milliard de fois ( n = 1000000000
), le temps total pris a été négligé et le temps moyen par opération était de 0,20 nanoSonde. Le "-8" indique que la référence a été exécutée sur une machine à 8 cœurs.
Portez une attention particulière à la valeur ns / op
(nanosecondes par opération). Cette métrique reflète directement les performances de votre code. Des valeurs plus faibles indiquent de meilleures performances. La comparaison des valeurs ns / op
à travers différentes repères vous permet d'évaluer les performances relatives de différentes approches ou optimisations de code.
Le collecteur des ordures Go peut avoir un impact significatif sur les performances, en particulier dans les repères avec des allocations fréquentes. Soyez conscient de ses effets potentiels et essayez de minimiser les allocations. L'utilisation d'outils tels que pprof
peut aider à identifier les domaines où la collecte des déchets a un impact conduire à des résultats trompeurs. Isolez le code que vous êtes compliqué pour éviter ces effets.
-gcflags = & quot; -m & quot;
pour analyser le code d'assemblage généré. le temps peut ne pas être suffisant. Utilisez les fonctions de synchronisation de <code> test.b
.
En suivant ces meilleures pratiques et en évitant les pièges courants, vous pouvez écrire des références précises et significatives qui fournissent des informations précieuses sur les performances de votre code de rendez-vous.
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!