Selon l'esprit de stackoverflow (grâce à @Bill le Lizard clarifiant cela) je voudrais présenter une petite recherche propre de la question bien connue de tous les développeurs web frontaux.test de performance des opérations DOM via innerHTML
Comment obtenir de meilleures performances de jscript lors de la programmation de DHTML, en utilisant les opérations innerHTML ou DOM? Pour les tests, j'ai créé une seule page HTML avec le bouton "start test" qui exécute 5000 fois la paire de fonction, qui est écrit soit sur l'idéologie innerHTML, soit par DOM. (Il peut être pris sur: http://codepad.org/HyiKRsNk)
- Pour éviter comparer les résultats de CPU sont affichés en pour cent, comment la fonction est plus rapide puis un autre. Donc, si vous voyez (17%), cela signifie que DOM innerHTML est plus rapide, si (peut-être plus tard) vous voyez (-5%) c'est innerHTML plus rapide que DOM.
- Pour éviter l'explosion de la mémoire, pour chaque appel, une nouvelle "zone de test" est créée et supprimée immédiatement après le test (le temps de création/suppression n'est pas atteint).
- test sont effectuées en display: none div pour éviter le retournement et la dégradation des performances sur le défilement
J'ai préparé 3 test (le dernier proposé par @tomdemuyt)
créer de nouvelles DIV et texte enfant pour elle
supprimer certains dIV (pour éviter l'influence de la différence de création, les deux tests utilise même pour créer div test, mais différent pour enlever)
Ajout d'un gestionnaire d'événement onclick
- Création d'un test d'arborescence en profondeur, création d'un test
<table><tbody><tr><td><span>text
. Le test DOM utilise des appels séquentiels de la paire createElement/appendChild Similaire à (4) mais 2 lignes
<tr>
sont créées. DOM utilise la fonction d'aide spéciale pour simplifier:treeHelper("table", treeHelper("tbody", treeHelper("tr",
Les résultats des tests sont suivis pour les différents navigateurs.
Alors, chers collègues, veuillez fournir: montrez un test quand innerHTML est plus rapide, lancez mon test sur les navigateurs non encore listés.
De nombreuses variations affectent les performances. 1.) quel navigateur, 2.) quels éléments vous insérez, 3.) quantité d'éléments/DOMString étant insérés, etc. En particulier les anciennes versions d'IE ont des problèmes majeurs de performance de concaténation de chaînes, même si une insertion .innerHTML est probablement plus rapide que la construction d'un DOM, IE sera plus lent en raison du problème de concat de chaîne. – scunliffe
@scunliffe - il n'y a pas de concaténation du tout! Seules les chaînes complètes sont jointes, Regardez ma réponse ci-dessous ici suit la liste des 4 navigateurs. Si vous pouvez fournir plus - ce serait bien! – Dewfy
vrai dans ce test, il peut s'agir d'une simple chaîne, mais en réalité, vous allez constituer différentes collections d'éléments (par ex.une table entière, enveloppée dans un formulaire, dans un div tombé dans la page quelque part). Vous devrez également être conscient que vous ne pouvez pas définir certaines valeurs .innerHTML dans IE et vice versa, il y a un tas de choses que vous ne pouvez pas faire dans la manipulation DOM standard dans IE. Les bibliothèques JS comme jQuery aident vraiment ici car elles vous isolent de ces différences de navigateur. – scunliffe