상세 컨텐츠

본문 제목

[자바 성능 튜닝] 성능 테스트 접근법

Java

by Wanderer Kim 2024. 4. 7. 21:48

본문

728x90

실제 애플리케이션을 테스트하자

마이크로벤치마크

마이크로벤치마크는 동기화 메서드 대비 비동기화 메서드를 호출하는 데 걸리는 시간, 스레드를 한 개 생성하거나 스레드 풀을 이용할 때의 오버헤드, 산술 알고리즘 한 개 대비 대체 구현체를 실행하는 데 걸리는 시간 등 매우 작은 단위의 성능을 측정하도록 걸계된 테스트다.

  • 벤치마크는 반드시 직접적인 결과를 사용해야하만 한다
  • 마이크로벤치마크에는 관련 없는 동작을 포함해서는 안 된다
  • 마이크로벤치마크는 정확한 입력 값을 측정해야 한다

매크로벤치마크

애플리케이션 성능을 측정하기에 가장 좋은 것은 관련 외부 자원을 포함한 애플리케이션 자체다.

애플리케이션이 LDAP을 이용해서 사용자의 권한을 확인한다면 동일한 모드에서 테스트해야 한다. DLAP 호출을 무시하면 모듈 단위의 테스트에서는 괜찮을지 모르지만, 결국 애플리케이션은 환경 설정을 모두 동일하게 해놓고 테스트해야 한다.

메조벤치마크

메조벤치마크는 실제 작업 일부를 수행하지만 완전한 형태를 갖추기 않은 애플리케이션인 벤치마크를 가리킬 때 사용하는 용어다.

메조벤치마크는 자동 테스트, 특히 모듈 단계에서 좋다.

 

처리율 및 배치와 응답 시간 이해하기

경과 시간 (배치) 관리

성능을 측정하는 데 있어 가장 간단한 방법은 특정 작업이 완료되는 데 걸리는 시간을 확인하는 것이다.

자바가 아닌 경우 이 테스트는 애플리케이션을 작성하고 실행 시간을 측정하면 된다. 자바인 경우에는 여기에 저스트 인 타임 컴파일이라는 단계가 더 있다. 즉, 코드가 완전히 최적화되고 최고의 성능으로 동작하는 데 몇 분 더 걸린다는 의미다.

처리율 측정

처리율 측정은 일정 기간 내에 완료할 수 있는 업무의 양을 기반으로 한다.

응답 시간 테스트

마지막 공통 테스트는 클라이언트에서 요청을 보낸 후 응답을 받기까지 걸리는 응답 시간을 측정하는 것이다.

변동성 이해하기

시간이 흐름에 따라 테스트 결과가 어떻게 달라지는지 이해해야 한다.

정확하게 동일한 데이터 세트를 처리하는 프로그램이라도 머신의 백그라운드 프로세스들이 애플리케이션에 영향을 주며, 프로그램이 실행될 때 네트워크가 다소 혼잡하다는 등의 이유로 실행할 때마다 다른 결과를 내놓을 것이다.

이 문제는 테스트를 여러 번 실행시켜서 그 결과를 평균치로 내면 해결할 수 있다.

빠르게 자주 테스트하자

이상적인 시나리오에서는 코드가 중앙 저장소로 체크인 될 때 철자 중 일부로 성능 테스트가 수행되고, 성능에 악영향을 끼치는 코드는 체크인이 안되게 하는 것이다.

빠르고 잦은 테스트는 다음의 지침을 따른다면 가장 유용하다.

  • 전부 자동화한다
  • 전부 측정한다
  • 대상 시스템에서 실행한다
반응형

'Java' 카테고리의 다른 글

ThreadLocal  (1) 2024.02.28
JVM 메모리 관리  (0) 2023.05.29
Stream API 개요  (0) 2023.05.05
CompletableFuture get()과 join()의 차이점  (0) 2023.05.02

관련글 더보기

댓글 영역