본문 바로가기
Java Source

Java 실행속도 benchmark framework

by 환타스틱 2009. 5. 28.
IBM 에서 내려받은 파일이다.

내용은 이렇다.
실행 속도를 측정할 때

long t1 = System.currentTimeMillis();
task.run(); // task is a Runnable which encapsulates the unit of work
long t2 = System.currentTimeMillis();
System.out.println("My task took " + (t2 - t1) + " milliseconds to execute.");

이렇게 측정하는 것은 제대로 된 속도 측정이 아니라는 것이다.

그 이유는, 코드의 warmup, 동적이 최적화, 등등...JVM 이 어떻게 동작하는지에 따라 여러 변수들이 개입되기 때문이다.

그러면서 글쓴이는 이러한 여러가지 변수를 제거하고 제대로 된 벤치마크 테스트를 할 수 있는 benchmark framework 을 소개하고 있다.

개인적인 경험으로도 단순히 위와 같은 코드로 실행 속도가 설명이 되지 않았던 적이 있어서 반가운 생각이 들었다.

근데 한가지 단점은 프레임웤을 실행해보려고 했더니  JDK 1.6 에 맞춰져 있어서 하위버전의 JVM에서는 동작이 안된다는 점이다. -_-;;;

이 내용은 http://www.ellipticgroup.com/html/benchmarkingArticle.html 에서 찾아볼 수 있다.