Bonjour,
Je viens de lire une série d'articles sur le NET qui présente un (ou compare des) framework JavaScript.
À chaque fois, il y a une section performance. Et là, j'avoue que je suis surpris.
Dans la plupart des articles de présentation et dans tous les articles de comparaison, le test de performance est fait sur la recherche d'un élément dans la page.
Pourtant si je regarde mes développements perso c'est probablement la fonction la moins utilisée.
Je sais pertinemment que certains paradigmes impliquent une utilisation intensive de cette fonction, mais ce n'est pas le cas de tous.
En regardant de plus près le paradigme de divers frameworks, il existe une façon (ce n'est pas la seule) de les partager.
ceux qui partent d'un HTML existant et qui recherchent des éléments pour leur appliquer une fonction
Ceux qui construisent un HTML prêt à l'emploi.
Ce qui peut se résumer à ces deux façons de faireet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <html> <head> <script>document.getElementById('myButton').onclick = function() { document.getElementById('display').value=8; };</script> </head> <body> <button id="myButton">click</button> <input id="display" type="text" value="0" /> </body> <html>(ce code illustre le principe rien de plus)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <html> <head> <script>document.body.addEventListener("load",function () { var button = document.createElement('BUTTON'); button.innerHTML = 'click'; var input = document.createElement('INPUT'); input.setAttribute('type','text'); input.value=0; button.onclick = function() { input.value=8; }; document.body.appendChild(button); document.body.appendChild(input); });</script> </head> <body> </body> <html>
Dans le premier cas, on a un HTML existant et pour assurer la fonction il faut chercher les éléments pour les manipuler.
Dans le second, on n'a pas de HTML et on ajoute dynamiquement les éléments. On ne cherche jamais d’élément.
Si je dois comparer deux frameworks qui adoptent l'un et l'autre de ces principes
Avoir une fonction de recherche dans le second cas qui n'est pas performante n'implique en rien que le framework est moins performant. Au contraire une implémentation naïve comme celle que je donne, ferait que même si le second avait une fonction de recherche 100 fois lente il resterait le plus rapide à l'exécution. Vu qu'il n'y a pas de recherche, le temps de recherche du premier le pénaliserait systématiquement.
Par contre si je m'intéresse au temps pour que la page soit disponible le second devant construire des éléments dynamiquement le temps de construction le pénaliserait. Dans le cas de la deuxième approche, une fonction de construction performante est bien plus importante que la fonction de recherche.
Mais dans la réalité, quelle que soit l'approche choisie on ajoute toujours dynamiquement des éléments et il arrive même dans la deuxième approche qu’on fasse des recherches.
Et c'est ce qui m'étonne dans tous ces articles (ou presque). La performance est mesurée au travers d'une seule fonctionnalité qui pour certains frameworks est marginale.
Il existe bien des sujets de comparaison des frameworks et le découpage que j'ai fait n'est qu'un parmi de nombreux autres.
A+JYT
Partager