Итак, у меня есть этот простой код:
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);
И он выведет некоторое время около 335 мс. Это очень хорошо. Но если я инкапсулирую функцию Run следующим образом:
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);
Он выведет 18319мс, что намного хуже, чем раньше. Почему это?
Кроме того, если это имеет значение, я запускаю его на Chrome 26.0.1410.63 в консоли. В node.js оба фрагмента хорошо работают на консоли.