Item 67 : 최적화는 신중히 하라
2021. 9. 3. 09:12
필자가 추천하는 세가지 최적화 격언
- (맹목적인 어리석음을 포함해) 그 어떤 핑계보다 효율성이라는 이름 아래 행해진 컴퓨팅 죄악이 더 많다(심지어 효율을 높이지도 못하면서)
- (전체의 97% 정도인) 자그마한 효율성은 모두 잊자. 섣부른 최적화가 만악의 근원이다.
- 최적화를 할때는 다음 두 규칙을 따르라
- 첫째 하지마라
- 두번째 아직 하지마라, 다시 말해 완전히 명백하고 최적화되지 않은 해법을 찾을때까지는 하지마라
성능 때문에 견고한 구조를 희생시키지 마라
- 빠른 프로그램보다는 좋은 프로그램을 작성하라.
- 좋은프롬그램은 정보 은닉 원칙을 따르므로 개별 구성요소의 내부를 독립적으로 설계할 수 있다.
- 따라서 시스템의 나머지에 영향을 주지 않고도 각 요소를 다시 설계할 수 있다(아이템 15)
- 완성할 때 까지 성능을 무시하라는 것이 아니다, 설계단계에서 성능을 반드시 염두에 두어야 한다.
- 성능을 제한하는 설계를 피하라
- 완성 후 변경하기가 가장 어려운 설게 요소는 바로 컴포넌트끼리, 혹은 외부 시스템과의 소통 방식이다.
- API, 네트워크 프로토콜, 영구 저장용 데이터 포맷 등이 대표적이다.
- API를 설계할 대 성능에 주는 영향을 고려하라
- public 타입을 가변으로 만들면, 즉 내부 데이터 변경이 가능하게 만들면 불필요한 방어적 복사를 유발할 수 있다.(아이템 50)
- 인터페이스도 있는데 굳이 구현 타입을 사용하는 것도 좋지 않다.
- 성능을 위해 API를 왜곡하는 건 매우 안좋은 생각이다.
정리
- 빠른 프로그램을 작성하려 안달하지 말자
- 하지만 시스템을 설계할 때 특히 API, 네트워크 프로토콜, 영구 저장용 데이터 포맷을 설계할 때는 성능을 염두에 두어야 한다.
- 충분히 빠르다면 끝이다.
- 그렇지 않다면 프로파일러를 사용해 최적화를 수행하라
'책 > 이펙티브자바' 카테고리의 다른 글
Item 69 : 예외는 진짜 예외 상황에만 사용하라 (0) | 2021.09.05 |
---|---|
Item 68 : 일반적으로 통용되는 명명 규칙을 따르라 (0) | 2021.09.04 |
Item 66 : 네이티브 메소드는 신중히 사용하라 (0) | 2021.09.02 |
Item 65 : 리플렉션보다는 인터페이스를 사용하라 (0) | 2021.09.01 |
Item 64 : 객체는 인터페이스를 사용해 참조하라 (0) | 2021.08.31 |