728x90

 

어떤 로직으로 짠 코드가 더 빠른가.

개발자에게 흥미를 유발시킬 수 없는 소재 아닌가. 두근두근

코딩테스트를 준비 할때도 알고리즘에 따라

속도를 비교할 수 있는 좋은 방법이지 싶다.

 

 

두 가지 방법을 소개할 예정이다.

EZ 버전쌈뽕한 버전.

 

 

 

console.time()  console.timeEnd() 사용하기

 

위 처럼 해두고 node ${파일명} 해주면

 

얼마나 걸렸는지 빠르게 보여준다.

 

Benchmark js 사용해보기

좀 쌈뽕한 방법이다. 

바로 benchmark js 를 사용해보는 것

설명을 그대로 변역해보면

"고해상도 타이머를 지원하고 통계적으로 중요한 결과를 반환하는 강력한 벤치마킹 라이브러리"

이다.

야무지게 비교해준다고 한다.

 

사용방법은 

npm install benchmark 로 다운받아주고

아래와 같은 코드를 돌리면 끝!

 

const Benchmark = require("benchmark");
const suite = new Benchmark.Suite();

suite
  // 비교함수 A
  .add("convertAndAdd", function () {
    convertAndAdd("123", "123");
  })
  // 비교함수 B
  .add("digitByDigitAddition", function () {
    digitByDigitAddition("123", "123");
  })
  // Add listeners
  .on("cycle", function (event) {
    console.log(String(event.target));
  })
  // 끝나면 아래와 같이 결과 표시
  .on("complete", function () {
    console.log("Fastest is " + this.filter("fastest").map("name"));
  })
  //  Run asynchronously
  .run({ async: true });

 

.add 를 통해서 함수를 추가해준다.

.on('cycle') 은 listener 역할을 하고 끝나면 결과를 표시해주는 역할을 할 수 있다.

.on('complete') 는 전체 비교가 다 끝나고 결과를 보여준다. this는 객체로 비교 함수들 각각의 값을 가지고 있다.

위의 결과를 보면

 

 

두 함수의 속도를 매우 자세히 확인해준다.

timeEnd 보다 시간은 조금 걸리지만 괜히 좀 더 믿음이 가는 결과물이다.

 

좀더 정밀한 방법이 꼭 필요할 때 Benchmark 라이브러리가 유용하게 쓰이지 않을까 싶다!

728x90

+ Recent posts