`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