Programming - cpueblo.com

PreCompile (프리헤더) 를 활용하여 빌드 시간을 확 줄이기


28초 걸리던 컴파일과 링크 시간이 8초로 줄어드는 프리컴파일 이용방법을 소개합니다. CPU 와 메모리 탓을 하기 전에 요걸 먼저 꼭 하세요. 대형 프로젝트에는 필수!!

글쓴이 : 유광희 날짜 : 2006-12-05 (화) 16:38 조회 : 8492


28초 걸리던 컴파일과 링크 시간이 8초로 줄어드는 프리컴파일 이용방법을 소개합니다. CPU 와 메모리 탓을 하기 전에 요걸 먼저 꼭 하세요. 대형 프로젝트에는 필수!!

안녕하세요. 유광희 입니다
Borland C++ Builder 6.0 환경에서 Pre-Compile 기능을 효율적으로 사용하는 방법을 
알려드립니다.
 

일단 결과 !

예제 프로젝트의 적용전 28 초 -> 8초

셈플 프로젝트의 설명

예제 프로젝트는 2개의 폼으로 구성되어 있는 간단한 어플리케이션 입니다. 2개의 폼에서 이렇게 차이가 나는데, 폼이 여러개라면 ... 덜덜덜..입니다.. 두 폴더의 프로젝트는 PreCompile 적용 전과 후를 비교하는 동일한 어플리케이션입니다 작은 프로젝트야 대충 기다리면 된다고 하실지 모르겠으나, 제 회사에서 작업하는 프로젝트는 5분~10분까지 빌드 시간이 걸립니다. -_-; 이 시간이 1분 이내로 끝났습니다! 얏호

적용 방법

1. PreHeader 유닛을 생성 (PreHeader.cpp, PreHeader.h) 2. PreHeader.h 에 각종 헤더, 폼 등 VCL 클래스에 사용된 헤더를 전부다 넣습니다 아래는 예로 구성한 헤더 내용 입니다

PreHeader.h 의 예

#ifndef PreHeaderH #define PreHeaderH #include <time.h> #include <assert.h> #include <vcl.h> #include <inifiles.hpp> #include <dir.h> #include <stdio.h> #include <string.h> #include <systdate.h> #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include &lt;Forms.hpp&gt; #include <ExtCtrls.hpp> #include <Graphics.hpp> #include <jpeg.hpp> #include <ComCtrls.hpp> #include <ImgList.hpp> #include <Registry.hpp> #include <ActnList.hpp> #include <scktcomp.hpp> #include <Dialogs.hpp> #include <NMHttp.hpp> #include <NMURL.hpp> #include <Psock.hpp> #include <vcl.h> //--------------------------------------------------------------------------- #endif 3. 모든 .cpp 의 내용을 수정하세요! VCL, 기타 헤더를 include 하는 내용을 모두 PreHeader.h 로 수정하세요 아래는 총 3개의 cpp 를 수정하는 모습니다 예:PreCompileTestApp.cpp
#include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------- USEFORM("TfrmMain.cpp", frmMain); USEFORM("TfrmTest1.cpp", Form1); -> //--------------------------------------------------------------------------- #include "PreHeader.h" //--------------------------------------------------------------------------- USEFORM("TfrmMain.cpp", frmMain); USEFORM("TfrmTest1.cpp", Form1); 예:TfrmMain.cpp #include <assert.h> #include <inifiles.hpp> #include <dir.h> #include <stdio.h> #include <string.h> #include <vcl.h> #pragma hdrstop #include "TfrmMain.h" //--------------------------------------------------------------------------- #pragma package(smart_init) -> #include "PreHeader.h" #include "TfrmMain.h" //--------------------------------------------------------------------------- #pragma package(smart_init) 예:TfrmTest1.cpp #include <time.h> #include <assert.h> #include <inifiles.hpp> #include <dir.h> #include <stdio.h> #include <string.h> #include <systdate.h> #include <vcl.h> #pragma hdrstop #include "TfrmTest1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) -> #include "PreHeader.h" #include "TfrmTest1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) 위처럼 PreHeader.h 로 모두 바꾸세요 4. PreHeader.cpp 를 프로젝트 파일 목록의 맨 첨 위로 올리세요 5. 프로젝트 빌드 시간을 비교해보세요! 엄청난 향상을 볼수 있습니다 6. 옵션 추가 수정 - 작업하는 프로젝트 파일이 많을 경우 아래의 절차를 꼭 처리하세요 아래의 절차는 현재 작업하던 프로젝트의 PreHeader 를 없애지 않고 보관하도록 하여여 다음번에 열었을 경우에도 바로 효과를 받기 위한 것입니다 Project -> Options -> Compiler -> Use pre-compiled header 를 선택 -> File Name 에 적절한 이름을 입력

예제와 소스 다운로드

다운로드

작성자

http://cpueblo.com

유광희

Downloads

  • PreCompileTestApp.zip

  •