Comment savoir si une syntaxe est plus performante qu’une autre ?

Après des années passées à jouer avec .net, il y a des syntaxes que l’on utilise instinctivement, et des pièges que l’on évite sans se poser la moindre question. Mais tous les ans il y a des nouveautés, de petits effets de mode, de grand chamboulement, ou des collègues qui vous font douter. Ajoutez à cela les améliorations continue de .net ...

Comment savoir aujourd’hui si le code que l’on écrit depuis des années est toujours aussi efficace ?

Comment savoir si un autre code est plus performant ?

Quels indicateurs choisir ?

À force de me poser ce genre de question, j’ai trouvé beaucoup de solutions (peut-être trop). Mais régulièrement, je me rendais compte que je me trompais (problème de warmup, ciblage du framework non pris en compte, impact sur le GC non mesurable…).

Jusqu’au jour où j’ai découvert BechmarkDotNet. Plusieurs années plus tard, cette librairie de benchmark répond toujours à mes besoins.

Pourquoi utiliser BenchmarkDotNet?

Avec BechmarkDotNet, je peux :

  • Comparer l’exécution d’un même code avec plusieurs versions de .net framework ou .net core.
  • Comparer l’exécution d’un même code en ciblant une plateforme x86 ou x64.
  • Mesurer l’impact sur la mémoire et le GC.

Attention : BechmarkDotNet a bien d’autres possibilités. Je n’ai listé ici que ce qui m’intéresse le plus.

Je me limite volontairement à ces trois fonctionnalités pour une raison simple. Celles-ci me permettent de communiquer des résultats de benchmarks où l’on voit clairement que le contexte d’exécution a un impact. Elles me permettent aussi de mettre en avant l’impact qu’un code peut avoir sur le GC (ex: plus on alloue de mémoire et plus notre code est mauvais).

Si vous ne connaissez pas encore BechmarkDotNet, je vous encourage vivement à aller sur le site https://benchmarkdotnet.org/ et à utiliser le MemoryDiagnoser.

Dans un prochain article, j’indiquerai quelques erreurs à éviter lors de la création d’un benchmark, son exécution, et son analyse.

Conclusion

Aujourd’hui si vous vous demandez si vous devez utiliser une méthode ou une autre, pensez systématiquement à BechmarkDotNet.

Prenez cinq minutes pour coder un petit benchmark, vous ne le regretterez pas.

Jérémy Jeanson

Comments

You have to be logged in to comment this post.