Ver Mensaje Individual
  #24 (permalink)  
Antiguo 21/04/2008, 14:34
Avatar de MaBoRaK
MaBoRaK
 
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: Me conviene usar eval aca ?

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

Bueno yo hice la prueba :D con 200000 elementos :D. Por favor use protector de ojos para probar jejejejeje.

http://maborak.com/incubator/arr.html?1
http://maborak.com/incubator/arr.html?2
http://maborak.com/incubator/arr.html?3
http://maborak.com/incubator/arr.html?4

A proposito CALISCO copiaste mal los codigos por eso los scripts de caricatos devolvian 0 o 1 ms

Este es el archivo final
Código PHP:
<html>
    <
head>
    <
script type="text/javascript">
/**
 * @author xifox
 */
Array.prototype.valid=function(valid)
{
    
valid valid || false;
    for(var 
i=0,j=1;i<this.length;i++)
    {
        var 
this.length-j;
        
//console.info("i="+i+":"+this[i]);
        //console.info("o="+o+":"+this[o]);
        
if(this[i]!=valid || this[o]!=valid)
        {
            return 
false;
        }
        else if(
i>o)
        {
            return 
true;
        }
        
j+=1;
    }
    return 
true;
};
modo = (document.location).toString().split ('?')[1].substr ((document.location).toString().split ('?')[1].length 11);
txtModo = ['Random ''Todos True''Todos False''Todos True + 1 False''Todos False + 1 True']

var 
condiciones = new Array(200000);

document.write ('<h3>Modo ' txtModo[modo] + '</h3>');
// relleno el array
for (var 0elementos condiciones.lengthelementosi++) {
    switch (
modo) {
        case 
'0':
        
condiciones[i] = new Boolean(Math.round(Math.random() * 1.5));
        break;
        
        case 
'1':
        
condiciones[i] = new Boolean (true);
        break;
        
        case 
'2':
        
condiciones[i] = new Boolean (false);
        break;

        case 
'3':
        
condiciones[i] = new Boolean (true);
        break;

        case 
'4':
        
condiciones[i] = new Boolean (false);
        break;
    }
}

    switch (
modo) {
        case 
'3':
        
condiciones.push (new Boolean (false));
        break;

        case 
'4':
        
condiciones.push (new Boolean (true));
        break;
    }

//console.log (modo, condiciones);

function ejecutarPrueba(titulocodigo) {
    var 
ini = new Date().getTime();
    var 
resultado codigo();
    
    var 
tardanza = (new Date().getTime())-ini;
    
document.write("<p>Segun <b>"+titulo+"</b> el resultado es <b>"+resultado+"</b> y ha tardado en sacarlo <span id=\"tardanza\">"+tardanza+" ms</span>.</p>");
}

ejecutarPrueba(" maborak con doble busqueda devuelve false si encuentra un false en el Array:", function() {
        return 
condiciones.valid(true);
    }
);

ejecutarPrueba"Con bucle y devolviendo false si hay false", function() {
        for(var 
i=0elementos condiciones.lengthi<elementosi++)
            if( 
condiciones[i] == false )
                return 
false;
        return 
true;
    } 
);

ejecutarPrueba"Con indexOf y mirando si existe \"false\" ", function() {
        return 
condiciones.toString().indexOf("false") > -1;
    }
);

/*
// Me da error: Too much recursion Â¿?
ejecutarPrueba( "Con eval y juntando todo el array con &&", function() {
        return eval("new Boolean( "+condiciones.join(" && ")+ ")");
    }
);
*/

ejecutarPrueba("Con bucle y haciendo valorAcumulado = valorAcumulado && actual", function() {
        for(var 
i=0elementos condiciones.lengthvalorAcumulado truei<elementos && valorAcumulado==truei++)
            
valorAcumulado valorAcumulado && condiciones[i];
        return 
valorAcumulado;
    }
); 
ejecutarPrueba("Con sort() de valores lógicos, tomando el primero", function() {
        return 
condiciones.sort()[0];
    }
);  

ejecutarPrueba("Con una cadena, concatenando un asterisco por cada false", function() {

        for(var 
0elementos condiciones.lengthstr ""elementosstr += (condiciones[i]) ? """*"i++)
        {}
        return 
str != "";
    }
);  

ejecutarPrueba("Creando un array con cadenas de 0 y 1 caracter, según condición", function() {
        
        for(var 
0elementos condiciones.lengthstr = new Array(); elementosstr[i] = (condiciones[i]) ? "" "*"i++)
        {}
        return 
str.join("") != "";
    }
);

</script>
    </head>
    <body></body></html> 
connection closed.
__________________

Maborak Technologies

Última edición por MaBoRaK; 21/04/2008 a las 15:49