수행시간 비교: 기본 for loop < forEach < for of < for in

기본 for loop가 가장 빠릅니다.

 

Example

기본 for loop 사용: 3.799ms
for in loop 사용: 359.135ms
forEach 사용: 21.931ms
for of 사용: 26.932ms

function Loop1(nList) {
  let total = 0;
  for (let i = 0; i < nList.length; i++) {
    total += nList[i];
  }
  return total;
}

function Loop2(nList) {
  let total = 0;
  for (const num in nList) {
    total += num;
  }
  return total;
}

function Loop3(nList) {
  let total = 0;
  nList.forEach((num) => {
    total += num;
  });
  return total;
}

function Loop4(nList) {
  let total = 0;
  for (const num of nList) {
    total += num;
  }
  return total;
}

let n = 1000000;
let nList = new Array();
for (let i = 1; i <= n; i++) {
  nList.push(i);
}

console.time("기본 for loop 사용");
Loop1(nList);
console.timeEnd("기본 for loop 사용");

console.time("for in loop 사용");
Loop2(nList);
console.timeEnd("for in loop 사용");

console.time("for Each 사용");
Loop3(nList);
console.timeEnd("for Each 사용");

console.time("for of 사용");
Loop4(nList);
console.timeEnd("for of 사용");

1. forEach 문은 배열에서만 사용이 가능합니다.

2. for in 문은 모든 객체에서 사용이 가능하지만 key에만 접근합니다. value는 key를 사용해 접근해야 합니다.

3. for of 문은 컬렉션 개체가 [Symbol.iterator] 속성]을 가져야 합니다.

let sample = [1, 2, 3, 4, 5];
sample.Case = "I'am in the Cafe";

for (const key in sample) {
  if (sample.hasOwnProperty(key)) {
    console.log(key, sample[key]);
  }
}

// 0 1
// 1 2
// 2 3
// 3 4
// 4 5
// Case I'am in the Cafe

for (const iterator of sample) {
  console.log(iterator);
}

// 1
// 2
// 3
// 4
// 5

'코딩 테스트 > 알고리즘' 카테고리의 다른 글

Problem Solving Approach  (0) 2020.07.09
자바스크립트. 문자 세기  (0) 2020.07.08
자바스크립트. 정렬 순서  (0) 2020.07.04
Analyzing Performance of Arrays and Objects  (0) 2020.07.04
Big O Notation  (0) 2020.07.02

+ Recent posts