Tag: performance

Java 문자열 더하기 연산의 최적화

String을 +로 더하는 코드가 javac과 JDK 런타임에서 버전에 따라 어떻게 최적화되는지 정리합니다. JDK 1.4의 StringBuffer 치환, JDK 5의 StringBuilder 치환, JDK 9의 invokedynamic 도입, JDK 15의 대안 전략 제거, JDK 24의 hidden class 기반 구현까지의 변화를 JDK 25에서 확인한 바이트코드와 함께 설명합니다.

Continue Reading

junit-benchmarks로 HTTP API의 응답 시간 측정하기

JUnit 4 확장인 junit-benchmarks로 HTTP API에 동시 요청을 보내 응답 시간을 측정하던 2012년경의 예제를 설명하고, 지금 같은 일을 한다면 어떤 도구를 쓸지 정리합니다.

Continue Reading

Java auto boxing의 컴파일 방식과 Integer 캐시

int와 Integer를 섞어 쓸 때 생기는 auto boxing·unboxing이 Integer.valueOf()와 intValue() 호출로 컴파일되는 과정을 JDK 25의 바이트코드로 확인합니다. IntegerCache의 -128~127 범위와 JLS 5.1.7의 요구사항, -XX:AutoBoxCacheMax 옵션, 박싱된 타입을 반복문에 쓸 때의 비용, 그리고 캐시 구현과 wrapper 생성자 deprecation이 JDK 5부터 25까지 어떻게 바뀌었는지 정리합니다.

Continue Reading