Perfection Kills

by kangax

Exploring Javascript by example

Archives Posts

‘with’ or without?

September 6th, 2007 by kangax

I remember back in the days there were these huge articles about refactoring Javascript to perform faster. “with” statements were considered a huge slow down…

Just to satisfy my curiosity I rolled a quick test:

Foo = {
  Bar: {
    Baz: {
      Qux: {
        Quux: function(){}
      }
    }
  }
}

// Plain call
console.time('test');
    for (var i=0; i<100000; ++i) {
      Foo.Bar.Baz.Qux.Quux();
    }
console.timeEnd('test'); // 562 ms

// "with" outside the loop
console.time('test');
  with(Foo.Bar.Baz.Qux) {
    for (var i=0; i<100000; ++i) {
      Quux();
    }
  }
console.timeEnd('test'); // 359 ms

// with inside the loop
console.time('test');
for (var i=0; i<100000; ++i) {
  with(Foo.Bar.Baz.Qux) {
      Quux();
  }
}
console.timeEnd('test'); // 1891 ms

// aliasing
console.time('test');
  for (var i=0, q=Foo.Bar.Baz.Qux.Quux; i<100000; ++i) {
    q();
  }
console.timeEnd('test'); // 422 ms
Filed under benchmark, with having 5 Comments »

Next Entries »