함수의 수행 시간이 얼마나 걸렸는지, 시간을 측정하는 방법을 소개합니다.

어떤 기능을 구현했을 때, 성능이 어떤지, 이전보다 개선이 되었는지 느려졌는지 확인해보기 위해 함수의 실행 시간을 측정해볼 때가 있습니다.

1. console.time()을 이용한 방법

console.time()을 호출하면 측정 시작 시간을 기록하고, console.timeEnd()을 호출하면 종료 시간을 기록하고, 그 차이를 로그로 출력합니다.

아래와 같이 어떤 함수의 시작과 끝에 time(), timeEnd()를 호출하여 실행 시간을 측정할 수 있습니다.

function myFunction() {
  console.time("myFunction"); // 측정 시작

  // 함수 코드 실행
  for (let i = 0; i < 1000000; i++) {
    // do something...
  }

  console.timeEnd("myFunction"); // 측정 종료 및 결과 출력
}

myFunction();

Output:

myFunction: 1.533ms

2. performance.now()를 이용한 방법

performance.now()는 코드의 성능을 측정할 때 사용되며, 더 정확한 시간 정보를 제공합니다. 시간 단위는 ms입니다. 또한, console.time()처럼 결과를 로그로 출력하지 않고, now() 함수가 호출될 때의 시간 정보만 제공합니다.

아래와 같이 함수 시작 시점에 시간을 기록하고, 종료 시점에 시간을 기록하여, 두 시간의 차를 계산하면 실행 시간을 얻을 수 있습니다.

function myFunction() {
  const startTime = performance.now(); // 측정 시작

  // 함수 코드 실행
  for (let i = 0; i < 1000000; i++) {
    // do something...
  }

  const endTime = performance.now(); // 측정 종료
  const duration = endTime - startTime; // 실행 시간 계산
  console.log(`myFunction의 실행 시간: ${duration} ms`);
}

myFunction();

Output:

myFunction의 실행 시간: 1.4375609997659922 ms

3. Date를 이용한 방법

아래와 같이 Date로 함수 실행, 종료 시간을 가져와서 실행 시간을 계산할 수 있습니다. 하지만 console.time()이나 performance.now() 보다 정확도가 떨어집니다.

function myFunction() {
  const start = new Date(); // 측정 시작

  // 함수 코드 실행
  for (let i = 0; i < 1000000; i++) {
    // do something...
  }

  const end = new Date(); // 측정 종료
  const duration = end - start; // 실행 시간 계산
  console.log(`myFunction의 실행 시간: ${duration} ms`);
}

myFunction();

Output:

myFunction의 실행 시간: 2 ms