2014-03-03 2 views
0

적어도이 예제에서는 ECMAScript 6 Map이 개체를 사용하는 것보다 검색 속도가 느린 것 같습니다.Firefox 맵이 오브젝트보다 맵 속도가 느린 이유는 무엇입니까?

map = {}; 
var i=1000000; 
console.time('populate'); 
while (i--) { 
    map[i] = 'value of '+i; 
} 
console.timeEnd('populate'); 

console.time('has'); 
var i=2000000; 
var ctr = 0; 
while (i--) { 
    if (map.hasOwnProperty(i)) { 
     ctr++; 
    } 
} 
console.timeEnd('has'); 
console.log(ctr) 





map = new Map(); 
var i=1000000; 
console.time('populate'); 
while (i--) { 
    map.set(i, 'value of '+i); 
} 
console.timeEnd('populate'); 

console.time('has'); 
var i=2000000; 
var ctr = 0; 
while (i--) { 
    if (map.has(i)) { 
     ctr++; 
    } 
} 
console.timeEnd('has'); 
console.log(ctr) 



map = {}; 
var i=1000000; 
console.time('populate'); 
while (i--) { 
    map[i] = 'value of '+i; 
} 
console.timeEnd('populate'); 

console.time('has'); 
var i=2000000; 
var ctr = 0; 
while (i--) { 
    if (map.hasOwnProperty(i)) { 
     ctr++; 
    } 
} 
console.timeEnd('has'); 
console.log(ctr) 

출력은 다음과 같습니다 :

populate: timer started Maptest:16 
populate: 465.51ms Maptest:20 
has: timer started Maptest:22 
has: 133.03ms Maptest:30 
1000000 Maptest:31 
populate: timer started Maptest:39 
populate: 418.26ms Maptest:43 
has: timer started Maptest:45 
has: 414.44ms Maptest:53 
1000000 Maptest:54 
populate: timer started Maptest:60 
populate: 347.55ms Maptest:64 
has: timer started Maptest:66 
has: 124.67ms Maptest:74 
1000000 

왜이 오브젝트 검사에 비해 4 배 속도가 느려질 수 확인 것이다 파이어 폭스에서 다음 코드를 사용하고 계십니까?

답변

1

캐시 효과처럼 보입니다. 내 캐시에 맞는지도의 항목 수를 줄이면 이 훨씬 많아졌습니다. 빠른 조회 ...