PROJET AUTOBLOG


le hollandais volant links

Site original : le hollandais volant links

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

update textContent VS data VS nodeValue · jsPerf

vendredi 14 août 2015 à 19:24
Suite de ça sur les perfs du JS.

Si on veut mettre du texte dans un élément, en JS, utilisez ça :
element.firstChild.nodeValue = 'lorem ipsum';

Ou bien, si l’élément est vide du départ :
element.appendChild(document.createTextNode('lorem ipsum'))


Plutôt que .innerHTML ou .innerText ou .textContent.

Par contre, pour la récupération de texte (court, sans HTML), innerHTML semble très rapide (par contre jQuery est trente mille fois plus lent que le reste : 25k opérations par seconde au lieu de 770'000'kops).

Évidemment, on fait rarement 700 millions de div imbriqués (ou alors il faut vous faire soigner), mais la différence peut être notable sur les ordinateurs moins puissants, comme les smartphones.

Je suis en train d’optimiser Blogotext et le lecteur RSS en JS.
À ce titre, je me rend compte que je vais pratiquement bannir .innerHTML, tant les perfs semblent merdiques. Il faut mieux utiliser plusieurs .createElement() et plein de manipulation DOM plutôt que d’utiliser .innerHTML.

La manipulation DOM directement reste quand même vachement plus rapide que le reste (ce qui est normal : le niveau est plus bas que le .innerHTML, qui doit invoquer un parseur HTML avant).
— (permalink)
Error happened! 0 - Call to a member function query() on null In: /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php:200 http://ecirtam.net/autoblogs/autoblogs/lehollandaisvolantnetmodelinks_a0746544d6d579b12954442f50731ed78c40dcd8/?update-textContent-VS-data-VS-nodeValue-jsPerf #0 /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php(414): VroumVroum_Config->setDisabled() #1 /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php(999): VroumVroum_Blog->update() #2 /var/www/ecirtam.net/autoblogs/autoblogs/lehollandaisvolantnetmodelinks_a0746544d6d579b12954442f50731ed78c40dcd8/index.php(1): require_once('...') #3 {main}