0からのゲームプログラミング > プリコンパイル済みヘッダ

Back Next
更新日 2004.05.27
プリコンパイル済みヘッダ

 今回は、ちょっと息抜きで、プリコンパイル済みヘッダの設定をしてみたいと思います。

 今まで初期設定のままコンパイルしていたと思います。たいした量のソースを書いた覚えはないのに、『やけに時間がかかるなぁ。』と思ったりしていませんでしたか。

 ソースファイル(*.cpp)の先頭の方では、ヘッダファイル(*.h)をインクルードしていますよね。コンパイルするとき、ヘッダファイルの解析には、結構時間が掛かります。この時間が掛かるヘッダファイルのインクルードを、ソースファイル毎に行っています。しかも同じヘッダファイルをインクルードしています。ちょっと無駄ですよね。

 そこで、よく使うヘッダファイルは、前もってコンパイルしておいて、中間ファイルにしておきます。そうすることによって、コンパイル時間が劇的に短縮されます。


◆Microsoft Visual C++ 6.0 での設定方法

 VC++ では、デフォルトの状態で、プリコンパイル済みヘッダを使用ように設定されています。ですから、一番最初にビルドするときには時間が掛かりますが、2回目以降は変更されたところしかコンパイルされず、コンパイル時間が大幅に短縮されていると思います。

 この自動でプリコンパイル済みヘッダを使用する設定から、手動でプリコンパイル済みヘッダの設定をすると、さらに高速化されます。


1.プリコンパイル済みヘッダ作成用のファイルを用意

 名前は何でも構いませんが、例えば、Source フォルダ内に、StdAfx.cpp のファイルを作成します。コードは以下のように記述して下さい。

StdAfx.cpp

//	プリコンパイル済みヘッダの作成
#include	"..\Header\StdAfx.h"


2.そのファイルをプロジェクトに追加

 メニューの「プロジェクト(P)」→「プロジェクトへ追加(A)」→「ファイル(F)...」を順に選択していき、先程作成した Source フォルダ内の StdAfx.cpp ファイルを追加します。


3.プリコンパイル済みヘッダの設定を変更

 メニューの「プロジェクト(P)」→「設定(S)... Alt+F7」を選択します。

・画面の左でプロジェクトを選択。(図では、SampleSTG)
・C/C++ タブを選択。
・カテゴリ(Y)で、「プリコンパイル済みヘッダー」を選択。
・プリコンパイル済みヘッダーファイル(.pch)を使用(U) このヘッダーまで(A): に、「 ..\Header\StdAfx.h 」 と記入します。



 次に、
・画面の左で StdAfx.cpp を選択。
・C/C++ タブを選択。
・カテゴリ(Y)で、「プリコンパイル済みヘッダー」を選択。
・プリコンパイル済みヘッダーファイル(.pch)の作成(M) このヘッダーまで(A): に、「 ..\Header\StdAfx.h 」 と記入。
・「OK」ボタンを押します。

 以上の設定を Debug と Release の両モードで行って下さい。


 これでビルドしてみて下さい。かなり高速化されると思います。リビルドもストレスなく行えます。上記の設定では、StdAfx.cpp でインクルードしているヘッダが事前にコンパイルされます。  ..\Header\StdAfx.h では、さらに色々インクルードしており、Windows.h 等もインクルードしています。


◆BCC Developer での設定方法

 メニューの「プロジェクト(P)」→「プロジェクト設定(O)... Shift+Ctrl+F11」を選択し、プロジェクト設定のダイアログを起動させます。

 「コンパイル1」タブのプリコンパイルヘッダーで、「使用する(-H)」を選択します。

 以上の設定を Debug と Release の両モードで行って下さい。


 BCC Developer は、ここ最近何度かバージョンアップされているようですので、バージョンアップすることをお勧めします。(以前のバージョンでは、上記の設定をしても、プリコンパイル済みヘッダが働かなかった為。設定をしても、殆ど変化が見られないようでしたら、バージョンアップして下さい。)


私のPC(Pentium 4 1.4 GHz)でのリビルド[再構築] 時間の計測結果
Visual C++ 6.0 BCC 5.5 + BCC Developer
デフォルト 約 17 秒 約 8 秒
プリコンパイル済みヘッダを使用 約 4 秒 約 2 秒
※ VC++ と BCC で、秒数に差が出ていますが、VC++ ではスタティックライブラリとヘッダファイルを使っているところで、BCC では DLL を使っている為、両者を単純には比較出来ません。


 以上の結果より、約4分の1に処理時間が短縮されました。今は、まだリビルド[再構築] するファイルの数が少ないですが、もっとファイルが増えてくると、プリコンパイル済みヘッダを利用するかしないかで、雲泥の差です。

【スポンサード リンク】


Back Next

0からのゲームプログラミング > プリコンパイル済みヘッダ