2012-04-02 5 views
2

내가 Node.js를위한 작은 메모리 벤치 마크를 쓴 Node.js를 : 10 개 특성을 가진 개체의내부 배열 표현은/

  1. 배열 : http://pastebin.com/KfZ4Ucn4

    process.memoryUsage().heapUsed 3 건을 사용하여 메모리 사용량을 측정 , 각 요소에 대한 서로 다른 속성 이름

  2. 동일한 속성 이름이 10 개의 속성, 동일한 속성 이름을 갖는 개체 배열
  3. 배열의 개체로 표시되는 10 개의 속성, 동일한 속성 이름을 가진 개체 배열

오버 헤드는 사례 1의 경우 1300 바이트, 사례 2의 경우 300 바이트, 사례 3의 경우 150 바이트로 나타납니다. 사례 1의 가비지 만 수집하고 후자의 경우에는 메모리 사용량이 감소하지 않습니다.

이러한 영향에 대한 설명이나 문서가 있습니까? 객체의 객체 배열에 대한 메모리 사용을 최적화하려고합니다.

[ { 
    foo : { bar : 1, baz : 2 } 
    , bar : { bar : 2, baz : 7 } 
    } 
, { 
    foo : { bar : 1, baz : 2 } 
    , bar : { bar : 2, baz : 7 } 
    } ] 

실마리가 있습니까?

답변

0

나는 ...이 V8 비슷한 물체를 표현하기 위해 "숨겨진 클래스"를 사용하는 방식과 관련이 있음을 추측하지만, 당신이보고하는 것은 발자국에서 매우 극적인 차이를 보인다있어

당신 숨겨진 클래스에 대한 자세한 내용은 여기를 참조하십시오. https://developers.google.com/v8/design 이 기사는 메모리 사용보다 속도에 더 중점을 둔 것처럼 보입니다.