카테고리:

업데이트:

1. 들어가기

최적화는 섣불리 진행하면 좋은 결과보다는 해로운 결과로 이어지기 쉽습니다.

그렇다고 최적화가 나쁘다는 것은 아닙니다.

최적화를 하더라도 빠르지 않고 제대로 동작하지도 않으면서 수정하기 어려워지는 경우도 있습니다.

그래서 최적화를 하기보다는 초기에 좋은 API를 설계하는 것이 중요합니다.

그럼 좋은 API를 설계하는 방법에 대해 알아보겠습니다.

2. 좋은 API 설계 방법

  1. 빠른 프로그램보다는 좋은 프로그램을 작성하라.

    좋은 프로그램은 정보 은닉 원칙을 따르기에 개별 구성요소의 내부를 독립적으로 설계할 수 있습니다.

    따라서, 시스템의 나머지에 영향을 주지 않고도 각 요소를 다시 설계할 수 있어

    유지보수 또는 개선하기에 좋은 장점이 있습니다.


  2. 성능을 제한하는 설계를 피하라.

    API, 네트워크 프로토콜, 영구 저장용 데이터 포맷은 완성 후 변경하기 어려운 설계 요소에 해당됩니다.

    그러므로 이런 요소들은 반드시 성능을 염두하고 설계해야 합니다.


  3. API를 설계할 때 성능에 주는 영향을 고려하라.

    다음은 API를 설계할 때 성능을 조금 더 향상시키는 요소입니다.

    • 내부 데이터를 변경할 수 없도록 만들어서 불필요한 방어적 복사를 막자.

    • 컴포지션으로 해결 가능한 경우, 상속 대신 컴포지션을 사용하자.

    • 인터페이스가 존재한다면 구현 타입 대신 인터페이스 타입을 사용하자.

3. 좋은 API를 설계한 이후

좋은 API를 설계하고 난 후에는 성능을 측정해봅시다.

만약, 충분히 빠르다면 더이상 최적화를 할 필요가 없습니다.

하지만 성능에 만족하지 못할 경우에는 최적화를 진행합니다.

최적화를 할 때는 프로파일링 도구를 사용하여 어떤 부분을 최적화할 지 지정하는 것이 좋습니다.

프로파일링 도구는 개별 메서드의 소비 시간과 호출 횟수 같은 런타임 정보를 제공하는데

이를 통해 어떤 부분을 최적화할 지 빠르게 알 수 있습니다.

이때 프로파일링 도구 외에 jmh와 같은 마이크로 벤치마킹 프레임워크를 사용할 수도 있습니다.

4. 정리

이번 포스트는 최적화에 대해 알아보았습니다.

많은 개발자는 빠른 프로그램을 작성하기 위해 무작정 최적화를 하곤 하는데

막상 최적화를 하더라도 전보다 더 성능이 안좋아지는 경우가 많습니다.

때문에 최적화를 하기 앞서 초기에 좋은 프로그램을 작성하려 노력해봅시다.

그 이유는 좋은 프로그램을 작성하면 성능은 대부분 저절로 따라오기 때문입니다.

만약, 좋은 프로그램을 작성했지만 성능을 만족하지 못하는 경우에는 최적화를 시도해봅시다.

단! 최적화 전후로 꼭 성능을 측정해야 합니다.

            
              📕 개인 기록용 블로그입니다.
              😊 오타나 잘못된 정보가 있을 경우 댓글이나 메일로 말씀해주시면 바로 수정하겠습니다! 😊
          

댓글남기기