■ 최적화 관련 격언
- 첫번째, 하지 마라.
- 두 번째, (전문가 한정) 아직 하지 마라. 다시 말해, 완전히 명백하고 최적화되지 않은 해법을 찾을 때까지는 하지마라.
- 자그마한 효율성은 모두 잊자. 섣부른 최적화가 만악의 근원이다.
이 격언들은 자바가 탄생하기 20년 전에 나온 것으로 최적화의 어두운 진실을 이야기한다. 최적화는 좋은 결과 보다는 해로운 결과로 이어지기 쉽고, 섣불리 진행하면 특히 더 그렇다.
따라서 성능 때문에 견고한 구조를 희생하지 말자. 빠른 프로그램보다는 좋은 프로그램을 작성하라. 좋은 프로그램이지만 원하는 성능이 나오지 않는다면 그 아키텍처 자체가 최적화할 수 있는 길을 안내해줄 것이다. 좋은 프로그램은 정보 은닉 원칙을 따르므로 개별 구성요소의 내부를 독립적으로 설계 할 수 있다. 따라서 시스템의 나머지에 영향을 주지 않고도 각 요소를 다시 설계할 수 있다.
■ 시스템 설계
프로그램을 완성할 때까지 성능 문제를 무시하라는 뜻이 아니다. 구현상의 문제는 나중에 최적화해 해결할 수 있지만, 아키텍처의 결함이 성능을 제한하는 상황이 아니라면 시스템 전체를 다시 작성하지 않고는 해결하기 불가능할 수 있다. 따라서 설계 단계에서 성능을 반드시 염두에 두어야 한다.
- 성능을 제한하는 설계를 피하라. 완성 후 변경하기가 가장 어려운 설계 요소는 바로 컴포넌트끼리, 혹은 외부 시스템과의 소통 방식이다.
- API를 설계할 때 성능에 주는 영향을 고려하라.
- 성능을 위해 API를 왜곡하는 건 매우 안좋은 생각이다.
- 각각의 최적화 시도 전후로 성능을 측정하라
- 프로파일링 도구는 최적화 노력을 어디에 집중해야 할지 찾는데 도움을 준다.
'Effective Java' 카테고리의 다른 글
[Effective Java] 아이템69 예외는 진짜 예외 상황에만 사용하라 (0) | 2021.08.22 |
---|---|
[Effective Java] 아이템68 일반적으로 통용되는 명명 규칙을 따르라 (0) | 2021.08.01 |
[Effective Java] 아이템66 네이티브 메서드는 신중히 사용하라 (0) | 2021.08.01 |
[Effective Java] 아이템65 리플렉션보다는 인터페이스를 사용하라 (0) | 2021.08.01 |
[Effective Java] 아이템64 객체는 인터페이스를 사용해 참조하라 (0) | 2021.08.01 |