Lo sentimos, la pregunta puede no ser tan clara. He estado interesado en escribir una función de verificación de cuadrados perfectos en Javascript. Para el caso estándar, he escrito lo siguiente:
for(let i = 1; i < 1000000; i++) { if(Math.sqrt(i) % 1 == 0) { // Is perfect square } }Esta función generalmente finaliza en aproximadamente 3 ms en mi PC cuando la instrucción if está vacía.
Mientras que la siguiente función 'optimizada' tarda unos 8 ms:
for(let i = 1; i < 1000000; i++) { if(i % 10 !== 2 && i % 10 !== 3 && i % 10 !== 7 && i % 10 !== 8) { if(Math.sqrt(i) % 1 == 0) { // Is perfect square } } }Sin embargo, si yo, por ejemplo, incremento un contador en las respectivas sentencias if, la primera función tarda alrededor de 12 ms pero la segunda se queda en 8 ms. Ambos devuelven el mismo contador. Solo tengo curiosidad por saber por qué fue esto.
Mi mejor suposición es que Javascript ignora la declaración if en la primera función porque está vacía, mientras que, debido a que la segunda función tiene una declaración if dentro, no la ignora. Sin embargo, sospecho que esto puede no ser el caso. ¡Solo me interesa ver si alguien tiene alguna interpretación diferente!