마이크로벤치마크는 동기화 메서드 대비 비동기화 메서드를 호출하는 데 걸리는 시간, 스레드를 한 개 생성하거나 스레드 풀을 이용할 때의 오버헤드, 산술 알고리즘 한 개 대비 대체 구현체를 실행하는 데 걸리는 시간 등 매우 작은 단위의 성능을 측정하도록 걸계된 테스트다.
애플리케이션 성능을 측정하기에 가장 좋은 것은 관련 외부 자원을 포함한 애플리케이션 자체다.
애플리케이션이 LDAP을 이용해서 사용자의 권한을 확인한다면 동일한 모드에서 테스트해야 한다. DLAP 호출을 무시하면 모듈 단위의 테스트에서는 괜찮을지 모르지만, 결국 애플리케이션은 환경 설정을 모두 동일하게 해놓고 테스트해야 한다.
메조벤치마크는 실제 작업 일부를 수행하지만 완전한 형태를 갖추기 않은 애플리케이션인 벤치마크를 가리킬 때 사용하는 용어다.
메조벤치마크는 자동 테스트, 특히 모듈 단계에서 좋다.
성능을 측정하는 데 있어 가장 간단한 방법은 특정 작업이 완료되는 데 걸리는 시간을 확인하는 것이다.
자바가 아닌 경우 이 테스트는 애플리케이션을 작성하고 실행 시간을 측정하면 된다. 자바인 경우에는 여기에 저스트 인 타임 컴파일이라는 단계가 더 있다. 즉, 코드가 완전히 최적화되고 최고의 성능으로 동작하는 데 몇 분 더 걸린다는 의미다.
처리율 측정은 일정 기간 내에 완료할 수 있는 업무의 양을 기반으로 한다.
마지막 공통 테스트는 클라이언트에서 요청을 보낸 후 응답을 받기까지 걸리는 응답 시간을 측정하는 것이다.
시간이 흐름에 따라 테스트 결과가 어떻게 달라지는지 이해해야 한다.
정확하게 동일한 데이터 세트를 처리하는 프로그램이라도 머신의 백그라운드 프로세스들이 애플리케이션에 영향을 주며, 프로그램이 실행될 때 네트워크가 다소 혼잡하다는 등의 이유로 실행할 때마다 다른 결과를 내놓을 것이다.
이 문제는 테스트를 여러 번 실행시켜서 그 결과를 평균치로 내면 해결할 수 있다.
이상적인 시나리오에서는 코드가 중앙 저장소로 체크인 될 때 철자 중 일부로 성능 테스트가 수행되고, 성능에 악영향을 끼치는 코드는 체크인이 안되게 하는 것이다.
빠르고 잦은 테스트는 다음의 지침을 따른다면 가장 유용하다.
Concurrent Random Number (0) | 2024.09.24 |
---|---|
ThreadLocal (1) | 2024.02.28 |
JVM 메모리 관리 (0) | 2023.05.29 |
Stream API 개요 (0) | 2023.05.05 |
CompletableFuture get()과 join()의 차이점 (0) | 2023.05.02 |
댓글 영역