El navegador web DOM ha existido desde finales de los años 90, pero sigue siendo una de las mayores limitaciones en rendimiento/velocidad.¿Pero por qué el DOM del navegador sigue tan lento después de 10 años de esfuerzo?
Tenemos algunas de las mentes más brillantes del mundo de Google, Mozilla, Microsoft, Opera, W3C y varias otras organizaciones que trabajan en tecnologías web para todos nosotros, así que obviamente no es un simple "Oh, no lo hicimos". 'optimizarlo'.
Mi pregunta es si tuviera que trabajar en la parte de un navegador web que trata específicamente con esto, ¿por qué me sería tan difícil hacerlo funcionar más rápido?
Mi pregunta no está pidiendowhat hace las cosas con calma, que está pidiendo why ha convertido no es más rápido?
Esto parece ir en contra de lo que sucede en otros lugares, como los motores JS con un rendimiento cercano al del código C++.
Ejemplo de escritura rápida:
for (var i=0;i<=10000;i++){
someString = "foo";
}
Ejemplo de lento debido a DOM:
for (var i=0;i<=10000;i++){
element.innerHTML = "foo";
}
Algunos detalles como por solicitud:
Después de banco de marca, parece que no es un problema lento sin solución, pero a menudo se usa la herramienta incorrecta, y la herramienta utilizada depende de lo que estés haciendo navegador cruzado
Parece que la eficiencia DOM varía mucho entre los navegadores, pero mi presunción original de que el dom es lento e irresoluble parece ser incorrecta.
me corrieron las pruebas contra Chrome, FF4, y el IE 5-9, se puede ver las operaciones por segundo en esta tabla:
Chrome es la velocidad del rayo cuando se utiliza la API de DOM, pero mucho más lento usando el operador .innerHTML (por una magnitud 1000 veces más lenta), sin embargo, FF es peor que Chrome en algunas áreas (por ejemplo, la prueba de anexión es mucho más lenta que Chrome), pero la prueba InnerHTML corre mucho más rápido que Chrome .
IE parece estar empeorando al usar DOM append y mejor en innerHTML a medida que avanzas en las versiones desde 5.5 (es decir, 73ops/seg en IE8 ahora a 51 ops/sec en IE9).
que tienen la página de prueba aquí:
http://jsperf.com/browser-dom-speed-tests2
Lo que es interesante es que parece diferentes navegadores parecen estar teniendo todas diferentes retos cuando se genera el DOM. ¿Por qué hay tanta disparidad aquí?
Estoy comentando porque no sé, ** pero ** sospecho que es porque tiene que actualizarse cada vez que cambia algo. Lo mismo con TListView de Delphi: si agrega 1000 elementos en un bucle for ** sin ** llamar a 'Listview.BeginUpdate;' primero, será muy lento y consumirá mucha memoria. Sin embargo, si primero llama a BeginUpdate, no intenta volver a dibujar antes de llamar a endUpdate. – Jeff
Por el amor de Dios respalde esto con algunos datos y puntos de referencia de las diferencias entre decir Firefox2 y Firefox8 y _muestre que el DOM es slow_ – Raynos
Publicación relacionada de exGoogler sobre por qué el diseño DOM es tan anormalmente lento: https: // noticias. ycombinator.com/item?id=9155564. Publicación relacionada sobre aficionados: http://softwareengineering.stackexchange.com/q/191738/24257 – Pacerier