2014-05-17 1 views
2

Object.keys 메서드를 사용하여 설정 (i7 @ 3.07GHz, 6GB RAM)에 대한 벤치마킹을 수행하고 흥미로운 결과를 발견했습니다.Object.keys 실행 시간

var foo = {}; 

for (var i = 0; i < 600000; i++) { 
    foo[i] = true; 
} 

console.time("foobar"); 

var keys = Object.keys(foo); 

console.timeEnd("foobar"); 

내가 400K 실행 시간에 왔을 때 10 000에서 시작하여 1 000 000까지 가고, 서로 다른 값으로 XXX를 대체 약 121ms이고, 50 만 :

이것은 내가 노력 코드입니다 ~ 130ms. 그러나 600k에서 250ms로 뛰었습니다. 왜 이렇게합니까?

답변

1

당신은 foo을 사용하여 how much memory을 검사 할 수 있습니다.

  1. = 500,000 = "foo를 객체

2메가바이트

주위 차지하면 I = 600,000 =" foo를 물체 주위 2.4 MB

  • 차지 따라서 CPU 캐시 크기는 약 2MB 정도이며 처리 할 수있는 것보다 많은 메모리가 필요할 때, 성능은 비선형 적으로 저하됩니다 (메모리 소비가 2MB 미만인 선형 임).

  • +1

    아, 알 수 있습니다. 고맙습니다! – user3054852