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=0, elementos = miArrayNumerico.length; i<elementos; i++)
miArrayNumerico[i] = Math.random()*elementos;
function maxConEval(arr) {
return eval("Math.max("+arr.join(",")+")");
}
function maxConBucle(arr) {
for(var i=0, maximo=0; i<arr.length; i++ )
if(arr[i]>maximo) maximo=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.