이번 항목은 최적화 시리즈 중에서 복사 미루기를 통하여, 성능을 향상 시키는 방법을 이야기 하고 있다. 그 예제로 허브셔터는 문자열 클래스를 만들어 보기로 한다. 아래 코드를 보자.


자, 이 코드에서 Original::String을 복사하면 완전히 새로운 객체가 만들어 지게 정의해 보아라. 이 행동은 다음을 위해서 하는 것이다. 복사 미루기를 통한 최적화!


해설

라인 26이 제일 중요하다,  라인 26번이 이 문자열 클래스의 복사 미루기의 핵심 알고리즘이다. 

문자열 클래스의 구조상, 버퍼의 크기가 꽉 차서, 메모리를 재할당 하게 될 경우, 문자열을 그대로 복사 해야지만 한다. 이 "문자열을 그대로 복사" 하는 것은 메모리 재할당을 하게 될 때 이루어지게 되는데, 이 메모리 재할당을 계속 뒤로 미루므로써, "문자열을 그대로 복사" 를 최소화 하는 알고리즘이 라인 26번이다.

책에선 이 지수가 1.5 배가 제일 좋다고 하는데, 이 부분은 JOOP 1998년 9월호에 Andrew Koening의 칼럼에 설명하고 있다고 한다.


총평

예제코드와 해설 코드가 약간 다르다는 것을 알수 있을 것이다. swap을 자주 이용하는 나로써는 저렇게 하는게 좋다고 생각하기 때문에 약간 바꾸었다. : ) 원소스를 보시고 싶다면 다시 책을 봐야 한다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기