. 릴리즈

드디어 길고도 지루한 실습이 끝났다. 이제 제품을 만드는 최종 과정인 릴리즈를 해보자. 릴리즈(Release)란 개발을 마무리하여 최종 실행파일을 만들어내는 작업이되 컴파일러의 빌드 옵션을 바꾸고 빌드만 다시 하면 된다. 빌드 타겟을 Release로 바꾸고 빌드 메뉴에서 솔루션 다시 빌드 항목을 선택하면 된다. , 하나의 에러나 경고없이 깔끔하게 컴파일될 것이다. 프로젝트 속성에서 경고 수준을 4로 높이면 143개의 경고가 발생하는데 사용하지 않은 인수나 초기화가 의심스러운 변수 목록들이며 모두 무시해도 되는 것들이다. 일반적으로 경고 수준 3에서 경고가 발생하지 않으면 이상이 없는 것으로 판단해도 된다.

Dangeun12까지 작성한 소스의 총 줄 수는 17100여 줄이되 MFC나 기타 고급툴을 사용한 프로젝트보다는 코드가 훨씬 더 함축적이기 때문에 2만줄 정도 된다고 생각할 수 있다. 실행파일의 크기는 얼마나 되는지 릴리즈 모드로 컴파일해보자. Dangeun1에서 설정한 프로젝트 속성 그대로 비주얼 C++ 6.0 7.0으로 각각 컴파일해보았다. 컴파일 결과는 다음과 같다.

 

 

비주얼 C++ 6.0

비주얼 C++ 7.0

Debug

713K

568K

Release

244K

240K

 

240KB라면 API 프로젝트로는 작은 크기가 아니지만 텍스트 편집기 중에는 아주 작은 편이다. 더구나 이 파일을 인터넷이나 대중 통신망에 올릴 때는 불과 110KB 정도로 압축되므로 이게 과연 제대로 된 편집기가 맞는지 의심을 받을 정도로 작다. 게다가 단독 실행파일이고 부속파일이 전혀 없기 때문에 홀가분하게 들고 다닐 수 있는 정도다.

디폴트 프로젝트 속성은 최대 속도로 되어 있으며 최소 크기로 옵션을 변경하면 이보다 조금 더 작은 실행파일을 얻을 수 있다. 또한 런타임 라이브러리를 변경하거나 최적화 옵션을 조정하여 컴파일하면 크기와 속도의 밸런스를 맞출 수 있다. ApiEdit는 크기도 작고 속도도 만족할 만큼 빠르므로 더 이상 구두쇠 짓을 하지 않고 디폴트 속성대로만 컴파일했다.

메모리 점유량은 대략 3MB 내외인데 메모장보다는 조금 더 많고 상용 편집기들에 비해서는 작은 편이다. 버퍼 구조가 단순하기 때문에 편집중인 파일의 용량 정도의 메모리만 요구하며 편집을 많이 하면 취소 레코드를 위해 메모리를 많이 할당하게 되지만 이것도 그렇게 많은 양은 아니며 옵션으로 조정할 수도 있다. 아직 기능이 많지 않기 때문에 메모리 점유량이 작고 뜨는 속도가 빠른 것이 장점이라 할 수 있다.

여기까지 작성된 결과가 버전 1.0이며 당근의 첫 번째 릴리즈 버전이다. 아직 더 많은 기능을 만들고 싶고 편집기로서 갖추어야 할 기본 기능을 다 갖추지 못한 미완성 버전이라고 할 수 있는데 이런 버전은 보통 0.9 0.5 정도의 버전을 붙이는 것이 보통이다. 하지만 이 예제는 비록 스팩은 부족하지만 나름대로 디버깅과 최적화에는 많은 신경을 썼으며 제공되는 기능은 안정적이므로 감히 1.0으로 버전을 붙였다. 버전 1.0은 적어도 남에게 보여줄 만큼은 된다는 자신감을 표현하기도 하지만 그보다는 이제 겨우 시작이라는 뜻으로 봐주기 바란다.