title: Calling function using 'new' is less expensive than without it?
body: <p>Given this very familiar model of prototypal construction:</p>
  
  <pre><code>function Rectangle(w,h) {
      this.width = w;
      this.height = h;
  }
  Rectangle.prototype.area = function() { 
      return this.width * this.height;
  };
  </code></pre>
  
  <p>Can anyone explain why calling <code>new Rectangle(2,3)</code> is consistently 10x FASTER than calling <code>Rectangle(2,3)</code> without the 'new' keyword? I would have assumed that because new adds more complexity to the execution of a function by getting prototypes involved, it would be slower.</p>
  
  <p>Example:</p>
  
  <pre><code>var myTime;
  function startTrack() {
      myTime = new Date();
  }
  function stopTrack(str) {
      var diff = new Date().getTime() - myTime.getTime();
      println(str + ' time in ms: ' + diff);
  }
  
  function trackFunction(desc, func, times) {
      var i;
      if (!times) times = 1;
      startTrack();
      for (i=0; i&lt;times; i++) {
          func();
      }
      stopTrack('(' + times + ' times) ' + desc);
  }
  
  var TIMES = 1000000;
  
  trackFunction('new rect classic', function() {
      new Rectangle(2,3);
  }, TIMES);
  
  trackFunction('rect classic (without new)', function() {
      Rectangle(2,3);
  }, TIMES);
  </code></pre>
  
  <p>Yields (in Chrome):</p>
  
  <blockquote>
  <pre><code>(1000000 times) new rect classic time in ms: 33
  (1000000 times) rect classic (without new) time in ms: 368
  
  (1000000 times) new rect classic time in ms: 35
  (1000000 times) rect classic (without new) time in ms: 374
  
  (1000000 times) new rect classic time in ms: 31
  (1000000 times) rect classic (without new) time in ms: 368
  </code></pre>
  </blockquote>