Post du fil d’actualité
Lien graphique pour voir le cadre de David Miolard
David MiolardDavid Miolard • 3e et +Vérifié • 3e et + Fondateur de Techmastermind.fr | Développeur Senior & Formateur (IA, Web, Jeux)Fondateur de Techmastermind.fr | Développeur Senior & Formateur (IA, Web, Jeux) 4 j •
Il y a 4 jours • Visible de tous sur LinkedIn et en dehors
Le Mythe du for est MORT. Mais pas partout. 💀
Stop au dogme : l'optimisation la plus enseignée en développement est devenue la plus nuisible sur le Front-end. 🤯
Notre benchmark rigoureux sur 10 millions d'entrées prouve que :
▶️En PHP (Back-end) : Cacher la taille du tableau ($l = count($array)) est un impératif architectural pour la scalabilité. Le moteur Zend est "bête" et doit être assisté. 🔨
▶️En JavaScript (V8/Gecko) : Cacher array.length manuellement est une perte de performance (jusqu'à -21.9% mesurée). Le moteur est "trop intelligent" (LICM) et votre intervention perturbe son pipeline d'optimisation. 🤖
Ne codez plus à l'aveugle. Sortez de la micro-optimisation et entrez dans la maîtrise de l'architecture des moteurs. 🚀
▶️ Tous les résultats, les protocoles de test (CLI, headless, médiane) et les implications pour votre code, c'est ici :
https://lnkd.in/e8sQ_D6d
hashtag#PHP hashtag#JavaScript hashtag#V8 hashtag#Optimisation hashtag#Architecture hashtag#DevWeb hashtag#Techmastermind
Activez pour voir l’image en plus grand.
Réactions
Lien graphique pour voir le cadre de **Mathieu Pinatel**
like
Lien graphique pour voir le cadre de Lionel Armanet
insightful
Lien graphique pour voir le cadre de Ishoboravyose Herdotte Martine
like
Lien graphique pour voir le cadre de Anthony Janin
like
Lien graphique pour voir le cadre de M Masdoua
support
Lien graphique pour voir le cadre de Gabriel SARR
like
Lien graphique pour voir le cadre de Pierre-Henri Dupouy
insightful
Lien graphique pour voir le cadre de Michaël Lopez
like
Ajouter un commentaire…
Lien graphique pour voir le cadre de David Miolard
David Miolard Auteur
Fondateur de Techmastermind.fr | Développeur Senior & Formateur (IA, Web, Jeux)
11 h
Arnaud Courtecuisse, Lionel Péramo 🌳, Pierre Gradot, Cyprien GLEPIN, Jason Benedetti Vous aviez raison, ma première version n’était pas optimale.
J’ai pris vos remarques en compte et publié tous les résultats et le code complet dans cet article LinkedIn https://www.linkedin.com/pulse/benchmark-boucles-et-pipelines-retour-sur-mon-initial-david-miolard-eqqle
🔍Benchmark, boucles et pipelines : retour sur mon protocole initial
Je reviens sur mon précédent post où je laissais entendre que l’optimisation de en PHP ou de en JS n’était pas critique sur V8/Gecko. Après avoir refa
Lien graphique pour voir le cadre de Arnaud Courtecuisse
Arnaud Courtecuisse • 3e et +
Ingénieur Logiciel & militant pour le climat / 4,3 tCO2e en 2024
1 j
Cherchez l'incohérence :
- "Sortez de la micro-optimisation"
- "N'instanciez pas un nombre pour stocker la longueur de votre tableau"
1 réponse 1 commentaire sur le commentaire de Arnaud Courtecuisse
Lien graphique pour voir le cadre de David Miolard
David Miolard Auteur
Fondateur de Techmastermind.fr | Développeur Senior & Formateur (IA, Web, Jeux)
17 h
Arnaud Courtecuisse je plaide coupable pour cette incohérence manifeste (ça m'apprendra à poster avant d'aller dormir). Plus d'explications dans le commentaire plus haut.
Lien graphique pour voir le cadre de Lionel Péramo 🌳
Lionel Péramo 🌳 • 3e et +
Implémentez rapidement des solutions web performantes et durables pour les CTO avec ma bibliothèque frontend éco-responsable | Plus de 15 ans d'expertise
(modifié)
1 j
"Sortez de la micro-optimisation" Non. Le besoin de priorisation des optimisations n'élimine pas le reste du travail.
"entrez dans la maîtrise de l'architecture des moteurs" Oui, toujours bon de connaître comment ça marche un niveau en-dessous.
1 réponse 1 commentaire sur le commentaire de Lionel Péramo 🌳
Lien graphique pour voir le cadre de David Miolard
David Miolard Auteur
Fondateur de Techmastermind.fr | Développeur Senior & Formateur (IA, Web, Jeux)
1 j
Lionel Péramo 🌳, merci pour cette remarque hyper pertinente. Elle permet de clarifier mon propos :
"Sortez de la micro-optimisation" : Je ne dis pas que le travail de fond n'a pas de valeur, mais qu'il doit être déplacé et non abandonné. Le temps passé à cacher array.length sur V8 est du temps non passé à améliorer la complexité algorithmique globale ou à maîtriser l'architecture du framework.
Notre rôle de Senior Dev, ce n'est plus d'appliquer des best practices dogmatiques qui datent des années 90 (beaucoup d'idéologies numériques, de paradigmes imposés comme techniques), mais de distinguer l'optimisation à l'échelle architecturale (qui est cruciale pour la scalabilité) de la micro-optimisation nuisible (qui entrave les moteurs modernes).
"Maîtrise de l'architecture des moteurs" : Exactement ! C'est le cœur du sujet. Tant que vous ne savez pas si la boucle for est optimisée par LICM (Loop-Invariant Code Motion) dans votre moteur JS ou si elle est naïvement évaluée dans votre moteur PHP, vous tirez dans le noir.
Conclusion : Oui au travail, non à l'effort mal dirigé. Un bon développeur est celui qui sait où et quand intervenir. 💡
Au plaisir d'échanger sur les benchmarks !
Lien graphique pour voir le cadre de Pierre Gradot
Pierre Gradot • 3e et +
Senior Software Engineer
(modifié)
1 j
Votre article ne montre pas les codes vraiment utilisés pour les benchmarks... Et l'explication "ça perturbe la pipeline" est très floue. Vous avez quelque chose de plus précis à nous montrer ?
2 réponses 2 réponses au commentaire de Pierre Gradot
Lien graphique pour voir le cadre de David Miolard
David Miolard Auteur
Fondateur de Techmastermind.fr | Développeur Senior & Formateur (IA, Web, Jeux)
16 h
Pierre Gradot et Cyprien GLEPIN, vous avez entièrement raison sur ce point : le premier protocole était incomplet, notamment parce que je n’ai pas publié les scripts exacts. Mea culpa.
Quand je parle de “perturbation du pipeline”, je fais référence à deux phénomènes distincts :
Côté moteur JIT, les premières exécutions sont interprétées, puis optimisées à chaud. Cette phase crée une instabilité de mesure si on ne laisse pas le moteur “chauffer”.
Côté CPU, certaines boucles trop simples ou contenant des instructions neutres (NOP, etc.) créent des micro-blocages dans le pipeline (Fetch/Decode/Execute), ce qui fausse les écarts si la charge mémoire est trop faible.
Je vais publier dans les prochaines heures le code complet (PHP, V8, SpiderMonkey) ainsi qu’une version mise à jour avec un vrai jeu de données (1M d’entrées) pour garantir la reproductibilité et la solidité du benchmark.
Lien graphique pour voir le cadre de Jason Benedetti
Jason Benedetti • 3e et +
Engineering Lead chez Docler Holding Luxembourg
19 h
Pourtant c’est typiquement de la micro-optimisation selon moi. Perplexe.
Accessibilité : partiellement conforme