메서드 성능 측정하기(System.currentTimeMillis & System.nanoTime)

📌 자바에서 시간 측정을 위한 두 가지 방식

static long currentTimeMillis()

현재 시간을 ms로 리턴한다. (1/1,000초)
이 시간으로 현재 날짜를 구할 수도 있다.

static long nanoTime()

현재 시간을 ns로 리턴한다. (1/1,000,000,000초)
JDK 5.0부터 추가되었다.
1ms 이하의 시간을 측정하기 어려워 등장했다.
주된 목적은 수행 시간을 측정하기 위해서 만들어졌다.
오늘의 날짜를 알아내는 부분에는 사용하면 안된다.

currentTimeMillis(), nanoTime() 무엇을 선택할까?

결과를 측정해보면 nanoTime()이 더 정확하다.
어떤 경우는 currentTimeMillis()가 더 느린 경우도 발생한다.
사용 중인 자바 버전이 JDK 5.0 이상이면 nanoTime()을 사용하는 것이 더 낫다.

📌 다른 메서드 성능 측정 방식

JMH와 Caliper를 제외한 나머지는 JUnit으로 만든 테스트 코드들을 실행하는데 사용된다.
ContiPerf가 사용하기 편하고, 그래프도 제공하지만 응답 시간이 나노 단위로 제공되지 않는 문제가 있다.
1.
JMH
2.
Caliper
3.
JUnitPerf
4.
JUnitBench
5.
ContiPerf
min(최소), avg(평균), max(최대), stdev(표준편차)가 있는데 이 수치는 평균과 표준편차를 중심으로 보면 된다.
나노초 밀리초차이가 발생하는 것이 작은 문제라고 생각할 수 있지만 이러한 것들이 쌓이게 되면 1초, 10초, 100초가 될 수 있다.

📌 참고 자료

TOP