Venez discuter de BechmarkDotNet ce midi sur twitch.tv/devapps

Hello ! Ce vendredi midi je rejoins la dream team DevApps pour parler de BecnhmarkDotNet : usages, pièges, et astuces diverses.

Cela se passera sur Twitch : https://www.twitch.tv/devapps

BenchmarkDotNet avec @c2iclark @denisvoituron @tossnet1

Jérémy Jeanson

L’option d’accessibilité que personne n’a vue venir ?

Grand fan de toutes les nouveautés qui peuvent améliorer l’expérience utilisateur, je suis tombé sur une de ces perles qui améliorent aussi l’accessibilité. Il s’agit du Dolby Vision. Fraichement arrivée sur Xbox, cette technologie est une solution concurrente au HDR10. La Xbox a donc maintenant deux options très performantes pour améliorer le rendu des jeux et des films.

Mais quel est le rapport avec l’accessibilité ?

Parmi les problèmes d’accessibilité fréquents, il y a de nombreux troubles d’identification des couleurs, contrastes et luminosité. Le Dolby Vision améliore justement ces trois aspects.

Si l’on se renseigne un peu sur le HDR et le Dolby Vision, on trouve beaucoup de données théoriques, image ou vidéos « sensés » montrer les rendus avec et sans traitement. Honnêtement, je n’ai jamais été convaincu par ce type de comparatifs pour une raison simple : je les vois au travers d’un écran de PC qui a ses propres qualités et défauts et qui ne prend pas en charge ces technologies.

Mais alors, pourquoi en parler ?

J’ai choisi de parler de Dolby Vision et d’accessibilité, suite à une petite expérience. J’ai pris un daltonien, une console et une télévision compatible :

  • Pour le daltonien, ça n’a pas été difficile à trouver. Je suis daltonien.
  • Côté console, j’ai utilisé ma Xbox Série X (petite folie achetée pour mes 45 ans).
  • Côté télévision, j’ai utilisé ma LG de 49 pouces compatible HDR et Dolby Vision (autre petite folie qui date un peu, c’était pour mes 40 ans).

Il est très compliqué d’expliquer ce qu’est le daltonisme et l’ensemble des difficultés qui en découlent. Pour faire simple. Il faut commencer par oublier l’idée reçue voulant qu’un daltonien ne voie pas les couleurs. Ce n’est pas vrai. Nous voyons les couleurs. Nous ne les interprétons pas comme tout le monde. En plus, vu ce défaut de perception, personne n’a jamais pris le temps de nous les apprendre. C’est un peu comme l’apprentissage scolaire des langues en France. Si vous êtes nul, on vous laisse dans un coin, car vous avez raté les bases. Votre niveau ne peut pas s’améliorer.

Le daltonisme, c’est un peu cela : une perception de couleurs qui peut compliquer la perception des formes et la discussion avec autrui.

Vous commencez à voir le lien avec le Dolby Vision ?

Après quelques minutes de jeux, j’ai été bluffé. Le Dolby Vision apporte un véritable plus par rapport au HDR10. Je distingue plus clairement les formes, les contours, et ceci beaucoup plus vite. Je peux donc réagir beaucoup plus rapidement en jeu.

Sur les jeux chargés et déjà très colorés comme Halo Inifinite : je vois une grande différence quand les ennemis ont une couleur proche de celle de l’environnement (murs, sols en intérieurs et extérieurs).

Sur les jeux plus réalistes comme Battlefield 5 : le jeu est beaucoup plus immersif. Les formes sont beaucoup plus nettes. Aucun problème pour distinguer un campeur dans l'herbe (même dans le noir, ou par mauvais temps).

Moralité

L’arrivée de la 4k sur PC et Xbox avait été un premier pas dans l’amélioration de l’accessibilité. La gestion du facteur de zoom aevc les écrans HDPI améliorait encore les choses sur PC. Le HDR allait encore plus loin.

Le Dolby Vision est la suite logique. La cerise sur le gâteau. Ce petit plus que certains technophiles / geeks vont vouloir à tout prix (par réel intérêt ou effet de mode). Pour les daltoniens, c’est une expérience à faire. Vous ne pourrez plus vous en passer.

Photo de la configuration du port HDMI relié à la Xbox : 4k BT 2020, Dolby Vision

Jérémy Jeanson

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

La fin du support de .net core 2.1 par Visual Studio a débuté!

Après plusieurs années de service, .net core 2.1 tire sa révérence.

Visual Studio Installer indique la fin des mises à jour de sécurité pour les composants .net core 2.1


Si vous l'utilisiez encore, vous verrez le message suivant lors des mises jour de Visual Studio :

desinstall01

Dans le cas où vous n'auriez plus besoin de .net core 2.1, vous pouvez le désinstaller pour gagner quelques méga-octets.
Lors de la désinstallation des composants, pensez bien à commencer par "Outil de développement plus.net core 2.1", avant de décocher ".net core 2.1 Runtime"

Jérémy Jeanson

La toolbox qui donnera une autre dimension à vos tests unitaires

J’entends souvent dire que les tests unitaires sont chronophages, difficiles à écrire ou à comprendre. Après chaque conversation sur le sujet, je me rends compte qu’une grande partie du problème est liée à l’outillage. Même si pour un développeur .net, Visual Studio simplifie les choses, il reste des zones d’ombres

Icons des librairies xUnit, FluentAssertion, AutoFixture et Moq