Tag Clouds



'with'의 사용으로 자바스크립트 성능개선

PDF
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

Trackback : http://firejune.com/trackback/1372

  1. avatar

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

    좋은정보 감사합니다!

    Posted by pRix at reply edit

     
     
  2. avatar

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

    Posted by 파이어준 at edit

     
     
  3. avatar

    captcha