Array 의 push 와 unshift 방법 성능 비교 분석

1440 단어 Arraypushunshift
원 리 를 통 해 알 수 있 듯 이 unshift 의 효율 은 비교적 낮다.원 소 를 추가 할 때마다 기 존 원 소 를 한 위치 로 옮 겨 야 하기 때문이다.하지만 효율 차 이 는 얼마나 될 까?다음은 테스트 해 보 겠 습 니 다.테스트 환경의 주요 하드웨어:CPU T7100(1.8G);메모리 4G DDR 2 667;하드디스크 5400 회전.주요 소프트웨어:운영 체 제 는 윈도 7 이다.브 라 우 저 는 Firefox 3.6.9 입 니 다.테스트 코드:
 
var arr = [ ], s = +new Date;
// push
for (var i = 0; i < 50000; i++) {
  arr.push(i);
}
console.log(+new Date - s);
s = +new Date;
arr = [ ];
// unshift
for (var i = 0; i < 50000; i++) {
  arr.unshift(i);
}
console.log(+new Date - s);
이 코드 는 각각 50000 번 push 와 unshift 작업 을 실 행 했 습 니 다.한 번 실 행 된 후에 결과 가 나 왔 습 니 다.12 1152 를 보면 unshift 는 push 보다 100 배 느 리 지 않 습 니 다!따라서 평소 에는 unshift,특히 대수 그룹 을 조심해 야 한다.그렇다면 꼭 unshift 의 효 과 를 거 두 려 면 다른 방법 이 있 을 까?답 은 긍정 적 이다.Array 는 하나의 배열 을 반전 시 킬 수 있 는 reverse 라 는 방법 이 있다.먼저 배열 에 넣 을 요 소 를 push 로 추가 하고 reverse 를 한 번 더 실행 하면 unshift 효 과 를 얻 을 수 있 습 니 다.예 를 들 어
 
for (var i = 0; i < 50000; i++) {
  arr.push(i);
}
arr.reverse();
reverse 의 성능 은 어 떻 습 니까?다음 에 다시 테스트 하 겠 습 니 다
 
var arr = [ ], s = +new Date;
for (var i = 0; i < 50000; i++) {
  arr.push(i);
}
arr.reverse();
console.log(+new Date - s);
결 과 는 12 를 통 해 알 수 있 듯 이 reverse 의 성능 이 매우 높 고 심지어 추가 소모 가 없 으 므 로 안심 하고 사용 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기