(코드 컴플리트2) 25 - 27장 회고

2021. 12. 30. 01:15독서

반응형

*12.29일에 진행한 코드숨 코드 컴플리트2 스터디 회고글입니다.

 

 

오늘은 25에서부터 27장에 관해 스터디를 진행했다.

각 장 모두 제각각의 주제가 있지만 '모두 성능을 어떻게 하면 높일 것인가?' 에 대한 답으로써 작성된 글이 아닐까?

📕 성능이 뭘까?


그럼 성능이 뭘까?

사실 가장 기초적이면서도 지나치기 쉬운 질문이다.

책에서는 성능에 대해서 명확하게 뭐라고 설명하지는 않지만, 성능에 관해서 아주 좋은 비유를 들어준다.

디지털 카메라에서 사진 한 장 한 장을 옮기는 속도가 아무리 빠르다 해도,

탐색기를 사용해서 한 번에 여러장씩 선택해서 옮기는 것 보다 효율적일 수는 없다. 

나는 이런 점을 미루어 봤을 때 성능은 사용자가 체감하는 속도와 효율성이라고 생각했다.

 

이 부분에 대해서 윤석님은 '성능이란 요구한 기능을 올바르게 사용할 수 있는가를 나타내는 척도다' 라고 하셨다.

뭐 정답은 없지만 내가 정리한 문장이 우유에 효모를 넣은 상태라면, 윤석님의 문장은 치즈에 비유하고 싶다.(가는 길은 같지만 완성도의 차이)

 

이 성능을 개선하기 위해서 우리는 여러가지 시도를 할 수 있는 것이고,

코드 튜닝도 그 선택지 중에 하나인 것이다.

 

 

📕 그럼 이 성능을 코드 튜닝을 통해서 어떻게 높일까?


책에서 제시하는 해결책은 생각보다 간단하다.

코드를 '측정'해서 과열지점을 찾고, 가장 많이 사용되는 몇 퍼센트를 '최적화' 한다.

(책에서 들어준 많은 예시에서는 4%의 코드가 90%의 시간을 차지하는 경우를 볼 수 있다.)

 

상세한 설명은 나중에 따로 적겠다.

 

 

 

코드 튜닝 단계는

1. 이해하고 변경하기 쉬운 잘 설계된 코드를 사용하여 소프트웨어를 개발한다.

2. 성능이 좋지 않다면

    a. 나중에 '마지막으로 좋았던 상태'로 돌아올 수 있ㄷ로고 작동하는 버전의 코드를 저장한다.

    b. 과열지점을 찾기 위해서 시스템을 축정한다.

    c. 성능이 취약한 것이 부적절한 설계 때문인지, 데이터형이나 알고리즘 때문인지를 판단하고 코드 튜닝이 적절한지 판단한다.

        코드 튜닝이 적절하지 않다면 1단계로 돌아간다.

    d.  c단계에서 규명된 병목을 튜닝한다.

    e. 한 번에 하나씩 성능을 측정한다.

    f. 코드의 성능이 향상되지 않았다면 a 단계에서 저장했던 코드로 되돌아간다.

3. 2단계를 반복한다.

 

(재귀다....)

  

 

베이스가 부족해서인지 비슷한 내용이 나와도 늘 새롭다.

언젠가는 익숙해질 날이 오겠지 하고 묵묵히 읽는 중이다.

이 글을 읽는 여러분들도 책을 같이 읽고 성장했으면 좋겠다!

 

 

 

반응형