item 67) 최적화는 신중히 하라
Last updated
Last updated
빠른 프로그램보다는 견고한 구조를 가진 좋은 프로그램을 작성하도록 노력하기
좋은 프로그램은 정보 은닉 원칙을 따르므로 개별 구성요소 내부를 독립적으로 설계할 수 있어 최적화 하기도 수월하다.
완성 후 변경하기 가장 어려운 설계 요소는 컴포넌트끼리 혹은 외부 시스템과의 소통 방식(API, 네트워크 프로토콜, 영구 저장용 데이터 포맷 등)이다.
public 타입 클래스를 가변으로 만들면 불필요한 방어적 복사를 수없이 유발할 수 있다. (item 50)
컴포지션으로 해결할 수 있음에도 상속 방식으로 설계한 public 클래스는 상위 클래스에 영원히 종속된다.
인터페이스가 있는데 굳이 구현 타입을 사용하면, 추후 변경할때 용이하지 못하게 된다.
신중하게 설계하여 깨끗하고 명확한 구조를 갖춘 프로그램을 만들도록 하자.
프로파일링 도구를 사용하여 메서드 소비 시간과 호출 횟수 등 런타임 정보를 확인하여, 어느 부분에 집중해 최적화 할 지 찾을 수 있다. 혹은 JMH도 활용할 수 있다.
JMH: 자바 코드의 상세한 성능을 알기 쉽게 보여주는 마이크로 벤치마킹 프레임워크
자바의 성능 모델은 정교하지 않고 구현 시스템, 릴리즈, 프로세서마다 차이가 있어 최적화의 효과를 각각에서 측정해야 하므로, 성능 예측은 무척 어렵다.