반응형
728x90
반응형
자바 최적화
최적화는 신중히하자. 섣불리 진행하게되면 빠르지도 않고 제대로 동작하지도 않으면서 수정하기는 어려운 소프트웨어가 된다. 성능 때문에 견고한 구조를 포기하지말자. 빠른 프로그램보다는 좋은 프로그램을 작성하자. 프로그램을 완성할 때까지 성능 문제를 무시하라는 뜻이 아닌, 설계 단계에서 성능을 반드시 염두에 둬야한다는 말이다.
1) 성능을 제한하는 설계를 피하자.
완성 후 변경하기가 가장 어려운 설계 요소는 바로 컴포넌트끼리, 혹은 외부 시스템과의 소통 방식이다. API, 네트워크 프로토콜, 영구 저장용 데이터 포맷 등이 대표적이며, 이런 설계 요소들은 완성 후에는 변경하기가 어렵거나 불가능 할수도 있다.
2) API 설계할때 성능에 주는 영향을 고려하자.
public 타입을 가변으로 만들면, 즉 내부 데이터를 변경할 수 있게 만들면 불필요한 방어적 복사를 수없이 유발할 수 있다.
java.awt.Component 클래스의 getSize 메서드가 호출하는 size()
@Deprecated
public Dimension size() {
return new Dimension(width, height);
}
매번 Dimension 객체를 새로 생성하여 리턴한다. 만약 이런 객체가 수백만개 생성된다면 문제가 발생할 수 있다.
3) 각각의 최적화 시도 전후로 성능을 측정하자.
성능 최적화를 시도한 부분이 성능에 별다른 영향을 주지 않는 곳일 수도 있다. 주요 원인의 코드 영역을 추측하기 어렵다. 일반적으로 90%의 시간을 단 10%의 코드에서 사용한다는 사실을 기억하자.
반응형
'Book > Effective Java' 카테고리의 다른 글
[교재 EffectiveJava] 아이템 69. 예외는 진짜 예외 상황에만 사용하라 (0) | 2021.12.12 |
---|---|
[교재 EffectiveJava] 아이템 68. 일반적으로 통용되는 명명 규칙을 따르라 (0) | 2021.12.10 |
[교재 EffectiveJava] 아이템 66. 네이티브 메서드는 신중히 사용하라 (0) | 2021.12.08 |
[교재 EffectiveJava] 아이템 65. 리플렉션보다는 인터페이스를 사용하라 (0) | 2021.12.07 |
[교재 EffectiveJava] 아이템 64. 객체는 인스턴스를 사용해 참조하라 (0) | 2021.12.06 |