Tengo un marco que genera el DOM de una aplicación completamente usando document.createElement
y document.appendChild
. Ahora que la aplicación se hace cada vez más grande, noté que Chrome necesita mucho más tiempo para compilar el DOM que otros navegadores.¿Son los cromos "appendChild" realmente tan lentos?
tanto, he creado la siguiente prueba de rendimiento:
window.onload = function(){
var now = new Date().getTime();
for(var i = 0; i < 10000; i++){
document.body.appendChild(document.createElement("div"));
}
setTimeout(function(){
console.log(new Date().getTime() - now);
},0);
}
Los resultados de esta prueba son muy interesantes:
- Chrome 16: 700 +
- Firefox 9: 560
- IE 9: 210
- Opera 11.60: 51
Chrome tardó más de 14 veces más en completarse que Opera. ¡Y eso no es solo un punto de referencia sin sentido! Realmente puedo sentir esta diferencia en mi aplicación.
¿Es normal que Chrome sea tan lento en las operaciones de DOM? ¿Hay alguna manera de acelerarlo?
Gracias!
'parece probable que deshacerse de su tiempo setTimeout'. – Domenic
Puede insertar los divs de una vez, en lugar de uno por uno. –
@Domenic necesita setTimeout en este tipo de punto de referencia para que el navegador realmente funcione antes de obtener el tiempo – Esailija