Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/04/2008, 09:28
Avatar de derkenuke
derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 4 meses
Puntos: 45
Re: Me conviene usar eval aca ?

Oye nada, que me ha venido la curiosidad de medir el rendimiento. 60 000 elementos aleatorios en el array y dos métodos de hallar el máximo: El eval y el de bucle.
Código PHP:
var miArrayNumerico = new Array(60000);
// relleno el array
for(var i=0elementos miArrayNumerico.lengthi<elementosi++)
    
miArrayNumerico[i] = Math.random()*elementos;

function 
maxConEval(arr) {
    return eval(
"Math.max("+arr.join(",")+")");
}
function 
maxConBucle(arr) {
    for(var 
i=0maximo=0i<arr.lengthi++ )
        if(
arr[i]>maximomaximo=arr[i];
    return 
maximo;
}


// inicio prueba maxConEval
var ini = new Date().getTime();
var 
$maxConEval maxConEval(miArrayNumerico);
var 
tardanza = (new Date().getTime())-ini;
document.write("Según maxConEval el máximo es "+$maxConEval+" y ha tardado en sacarlo "+tardanza+" ms.<br/>");

// inicio prueba maxConBucle
var ini = new Date().getTime();
var 
$maxConBucle maxConBucle(miArrayNumerico);
var 
tardanza = (new Date().getTime())-ini;
document.write("Según maxConBucle el máximo es "+$maxConBucle+" y ha tardado en sacarlo "+tardanza+" ms.<br/>"); 

Los resultados hablan por sí solos:
Cita:
Iniciado por FF2
Según maxConEval el máximo es 59999.26454998953 y ha tardado en sacarlo 3031 ms.
Según maxConBucle el máximo es 59999.26454998953 y ha tardado en sacarlo 219 ms.
Cita:
Iniciado por IE6
Según maxConEval el máximo es 59996.64244955615 y ha tardado en sacarlo 469 ms.
Según maxConBucle el máximo es 59996.64244955615 y ha tardado en sacarlo 63 ms.
Así que es más lento el eval, con diferencia.

Con booleanos pasará lo mismo.

Saludos.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.