최적화는 좋은 결과보다는 해로운 결과로 이어지기 쉽고, 섣불리 진행하면 특히 더 그렇다.
성능때문에 견고한 구조를 희생시키지 말자. 빠른 프로그램보다는 좋은 프로그램을 작성하라 좋은 프로그램이지만 원하는 성능이 나오지 않는다면 그 아키텍쳐 자체가 최적화할 수 있는 길을 안내해줄 것이다.
프로그램을 완성할 때까지 성능 문제를 무시하라는 뜻이 아니다. 구현상의 문제는 나중에 최적화해 해결할 수 있지만, 아키텍쳐의 결함이 성능을 제한하는 상황이라면 시스템 전체를 다시 작성하지 않고는 해결하기 불가능할 수 있다. 따라서 설계단계에서 성능을 반드시 염두에 두어야 한다.
성능을 제한하는 설계를 피하라 완성 후 변경하기가 가장 어려운 설계 요소는 바로 컴포넌트끼리, 혹은 외부 시스템과의 소통 방식이다.
API를 설계할 때 성능에 주는 영향을 고려하라 public 타입을 가변으로 만들면, 불필요한 방어적 복사를 유발할 수도 있다. 합성으로 해결할 수 있는 문제를 상속 방식으로 해결하면 상위클래스에 영원히 종속되어 그 성능 제약까지 물려받게 된다.
다행히 잘 설계된 api는 성능도 좋은 게 보통이다. 그러니 성능을 위해 API를 애곡하는 건 매우 안 좋은 생각이다.
빠른 프로그램을 작성하려 안달하지 말자, 좋은 프로그램을 작성하면 성능은 따라오기 마련이다.