Skip to content

Latest commit

 

History

History
129 lines (79 loc) · 3.66 KB

20160705_Softeam_coding-et-performance.adoc

File metadata and controls

129 lines (79 loc) · 3.66 KB

2016/07/05 - Softeam 12@13 - Coding & Performance, an initiatory journey

Notes

  • Par Jean-Philippe BEMPEL (archi perf chez Ullink)

  • Twitter technique donné : @jpbempel

20160607 Softeam coding et performance 01

Rules of thumb

Règles empiriques : gaffe ! On les applique sans savoir pourquoi, on les hérite des "anciens du projet"…​
Toujours les vérifier !

Le JIT permet à l’heure actuelle d’éviter bon nombre de ces vieilles règles.

20160607 Softeam coding et performance 02

→ Exemple du toArray() : gaffe ! Malgré ce qu’on pourrait croire, entre les solutions 2 et 3, c’est la 2 la plus rapide (pas besoin d’initialiser les éléments du tableau à 0 dans ce cas)

Le JIT marche beaucoup par pattern matching (reconnaissance de patterns de codage)

Algo et complexité

De nouveau la comparaison entre LinkedList et ArrayList, en o(k1 *n) et o(k2 * n) MAIS avec k1 > k2 du fait du cache de nos procs modernes (voir les conf de Forax et Paumard sur le sujet)

→ En gros, morale de l’histoire : les constantes COMPTENT
(Et utilisez des ArrayList !)

les ordres de grandeur

20160607 Softeam coding et performance 03
20160607 Softeam coding et performance 04
latences mémoire
📎
La latence mémoire permet de catégoriser les problèmes de perf que l’on rencontre (30 ms ce n’est PAS un pb de cache…​)
le classique "Double Check Locking"

20160607 Softeam coding et performance 05

→ Mais on s’est fait piéger !
Tout ça pour un exemple où on fait une requête en base SANS index, qui est BIEN plus lente (ordre de grandeur) qu’un pb de DCL.

benchmark

Micro-benchmarks are really hard to make it correct.

Utilisez JMH ! Toujours ! Et rien d’autre !

→ Mais même avec, soyez prudents !
Le micro-benchmark implique un espace de travail TRES restreint, qui ne correspond PAS à la réalité !

💡
Conseil de JP
: préférez des macro benchmark avec des données réelles.

optimisation prématurée

Premature optimization is the root of all evil !

— Donald E. Knuth

Measure, don’t guess !
Measure, don’t premature !

Conclusion

What is good performance engineer ?
Est-ce que le coût du temps que je passe à mon optimisation en vaut la peine ? (équation économique)

Ressources

20160607 Softeam coding et performance 06