¿Por qué esta enorme diferencia de rendimiento para una función de Javascript encapsulado?
Así que tengo este código simple:
function Run () {
var n = 2*1e7;
var inside = 0;
while (n--) {
if (Math.pow(Math.random(), 2) +
Math.pow(Math.random(), 2) < 1)
inside++;
}
return inside;
}
var start = Date.now();
Run();
console.log(Date.now() - start);
Y saldrá en algún momento alrededor de 335ms. Eso es bastante bueno. Pero, si encapsulo la función Ejecutar así:
var d = Date.now();
(function Run () {
var n = 2*1e7;
var inside = 0;
while (n--) {
if (Math.pow(Math.random(), 2) +
Math.pow(Math.random(), 2) < 1)
inside++;
}
return inside;
})();
console.log(Date.now() - d);
Producirá 18319ms, que es mucho peor que el caso anterior. Por qué es esto ?
Además, si importa, lo estoy ejecutando en Chrome 26.0.1410.63, en la consola. En node.js, ambos fragmentos funcionan bien en la consola.