Rev. 2.73

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.

  • pRix pRix

    예전 기억으로는 with는 리소스를 많이먹는다고 기피해야할 명령어로 알고있었는데
    활용 방법에 따라서는 지역변수 캐시효과를 뛰어넘는 퍼포먼스를 보여주네요!!

    좋은정보 감사합니다!

    reply edit

  • 저는 소스 코드를 압축하는 정도로 사용해 왔는데, 잘만 사용하면 성능을 끌어 올릴수도 있겠더군요. 방문해 주셔서 감사합니다.

    reply edit

Your Reaction Time!

captcha

avatar