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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage