Foros del Web » Programando para Internet » Javascript »

porque en mi Benchnmark sale más rápido crear elementos con DOM que innerHTML ?

Estas en el tema de porque en mi Benchnmark sale más rápido crear elementos con DOM que innerHTML ? en el foro de Javascript en Foros del Web. loading............ Talvez hago mal el Test... pero me salta que es mas rápido crear 1000 elementos con DOM que innerHTML.... pueden probarlo? Código PHP: < ...
  #1 (permalink)  
Antiguo 02/07/2007, 18:49
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 9 meses
Puntos: 35
porque en mi Benchnmark sale más rápido crear elementos con DOM que innerHTML ?

loading............

Talvez hago mal el Test... pero me salta que es mas rápido crear 1000 elementos con DOM que innerHTML....

pueden probarlo?
Código PHP:
<html>
        <
head>
                <
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                <
title>asdasdasdasd</title>
        <
script type="text/javascript">
        var 
samp_bench=function()
{
    var 
g=document.getElementById("bla");
    var 
t=document.getElementById("target");
    
t.innerHTML="";
    var 
startTime=new Date().getTime();
    for(
i=0;i<1000;i++)
    {
        var 
document.createElement("span");
        
t.appendChild(a);
        var 
endTime=new Date().getTime();
    }
    
g.innerHTML "Con DOM =>"+(endTime-startTime);
}
var 
samp_bench2=function()
{
    var 
g=document.getElementById("bla");
    var 
t=document.getElementById("target");
    var 
startTime=new Date().getTime();
    
t.innerHTML="";
    for(
i=0;i<1000;i++)
    {
        
t.innerHTML+="<span></span>"
        
var endTime=new Date().getTime();
    }
    
g.innerHTML "con InnerHTML=>"+(endTime-startTime);
}
        
</script>
        <style type=text/css>
            .pan{
                background-color:#FFFFFF;
                border:1px dashed red;
                width:200px;
                height:50px;
                color:white;
                font:normal 0.8em Tahoma,MiscFixed;
                text-align:center;
                vertical-align:bottom;
            }
        </style>
        <link rel="stylesheet" type="text/css" href="style.panel.css" />
        </head>

    <body>
        <input type="button" value="1000 elementos con document.createElement!!!!" onclick="samp_bench();">
        <input type="button" value="1000 elementos con innerHTML !!!" onclick="samp_bench2();">
        <div id="bla"></div>
        <div id="target"></div>
        </body>
</html> 


connection closed.
__________________

Maborak Technologies
  #2 (permalink)  
Antiguo 02/07/2007, 20:28
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 3 meses
Puntos: 45
Re: porque en mi Benchnmark sale más rápido crear elementos con DOM que innerHTML ?

Hola MaBoRaK.

Lo he probado... creo que lo que ralentiza la creación con innerHTML es tener que acceder a él en cada iteración del bucle.

Si hacemos en el bucle:
Código PHP:
    for(var i=0cadena="";i<1000;i++)
    {
        
cadena+="<span></span>"
    
}
    
t.innerHTML+=cadena
Entonces va mucho más rápido (como debería ser).


Otro detalle es sacar fuera del bucle endTime, si no te lo va modificar en cada iteración, y con extraerlo al final de las iteraciones ya es suficiente!



Bueno, y si lo que querías probar es realmente el tiempo accediendo a innerHTML, ya ves que es monstruosamente lento.

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 03/07/2007, 10:32
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 9 meses
Puntos: 35
Re: porque en mi Benchnmark sale más rápido crear elementos con DOM que innerHTML ?

loading...........

Cierto, gracias!!

connection closed.
__________________

Maborak Technologies
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:10.