kangax씨가 2007년 9월에 작성한 내용입니다. "with" 명령문(Statements)으로 자바스크립트 성능을 향상시키는 방법에 대하여 다루고 있습니다. 아래의 코드를 실험해 보십시오.
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
Comments
Got something to add? You can just leave a comment.
예전 기억으로는 with는 리소스를 많이먹는다고 기피해야할 명령어로 알고있었는데
활용 방법에 따라서는 지역변수 캐시효과를 뛰어넘는 퍼포먼스를 보여주네요!!
좋은정보 감사합니다!
reply edit
저는 소스 코드를 압축하는 정도로 사용해 왔는데, 잘만 사용하면 성능을 끌어 올릴수도 있겠더군요. 방문해 주셔서 감사합니다.
reply edit
Your Reaction Time!