Perfection Kills

by kangax

Exploring Javascript by example

← back 130 words

`with` or without?

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

Did you like this? Donations are welcome

comments powered by Disqus