BenchmarkdotNet BenchmarkdotNet

Jusqu’à présent, nous avons vu des outils permettant de suivre les performances lors d’une exécution en mode utilisateur. Cependant, comme on l’a vu dans le chapitre précédent, il est parfois judicieux d’isoler un bout de code et de le mettre sous pression dans un benchmark afin de déterminer si l’objectif de performance est atteint.

Bien sûr, il est possible de réaliser cette opération manuelle grâce à certains objets présents dans le framework, comme la classe Stopwatch, permettant de déclencher un chronomètre.

Cependant, cela impliquerait d’omettre le fonctionnement interne de C# ainsi que ses optimisations. N’oublions pas que le code C# est transformé en code IL et que ce dernier est recompilé à la volée (sauf dans le cas bien précis de la compilation AOT) par le compilateur JIT. Et c’est là que l’on peut obtenir un gain de performance ou une perte considérable.

Cette opération de compilation par le JIT se produit en effet lorsque le runtime accède au code la première fois. On appelle cela l’overhead de la compilation JIT, qui crée donc, au premier accès, un délai supplémentaire du fait de cette compilation. Néanmoins, une fois cette opération effectuée, les appels suivants sont beaucoup plus rapides, car le code a été spécifiquement compilé...

couv_EI2ECR.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Compteurs de performance
Suivant
Outils alternatifs