단지 컴파일 속도 향상을 위해서 Pimpl 관용구나 인터페이스를 사용하진 말 것

프로그래머 중에 단지 컴파일 속도 향상을 위해서 Pimpl 관용구나 인터페이스를 사용하는 사람이 많습니다. 하지만 그 방법은 예전엔 좋았을지는 몰라도, 지금은 별로 좋지 않습니다. 단점이 장점보다 더 많기 때문입니다. 그 이유를 나열해 보겠습니다.

첫째, Pimpl 관용구나 인터페이스를 사용하려면, 레이어 역할을 하는 클래스를 하나 더 만들어야 합니다. 게다가 원래 클래스에서 public이나 protected인 멤버가 변경될 때마다 원래 클래스와 새로 만든 클래스를 모두 바꿔야 합니다. 이렇듯 유지 보수에 추가되는 노력이 꽤 큽니다.

둘째, 빌드할 때 시간을 많이 차지하는 건 컴파일이 아니라 링크입니다. 기능을 제대로 모듈화했다면, 기능 하나를 구현할 때 실제로 고쳐야 하는 소스 파일의 수는 많지 않기 때문입니다. 그 점을 감안하면, 컴파일 속도 향상은 큰 의미가 없습니다. 컴파일 시간은 프리컴파일드 헤더만 잘 활용해도 많이 줄일 수 있습니다. 그리고 인크레디빌드처럼 여러 파일을 분산 컴파일시켜 주는 도구를 활용해도 됩니다. 아니면 컴퓨터를 좋은 것으로 바꾸는 것도 컴파일 속도를 향상시키는 좋은 방법입니다. 상황에 따라서는 유니티 빌드라는 방식도 고려해 볼 수 있습니다.

셋째, 객체를 스택에 생성할 수 없어서, new와 delete에 들어가는 부하가 생깁니다. 더구나 이 부하는 프로그래머뿐만 아니라 사용자에게도 영향을 줍니다.

Pimpl 관용구나 인터페이스는 컴파일 속도 향상보다는 구현과 인터페이스를 분리하는 용도로 사용하는 게 낫습니다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중