Warum dieser enorme Leistungsunterschied für eine gekapselte Javascript-Funktion?
Also habe ich diesen einfachen Code:
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);
Und es wird einige Zeit um 335ms ausgegeben. Das ist sehr gut. Aber wenn ich die Run-Funktion so einkapsle:
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);
Es wird 18319ms ausgeben, was viel schlimmer ist als der Fall zuvor. Warum ist das ?
Wenn es darauf ankommt, starte ich es auf Chrome 26.0.1410.63 in der Konsole. Auf node.js funktionieren beide Snippets auf der Konsole gut.