- ベストアンサー
コンパイル時間を短縮する方法について
- コンパイル時間を短縮する方法について詳しい方がいましたら、どうすれば短縮できるか教えていただきたいです。
- 私の環境はIDE: Visual Studio 2008 Express Edition、OS: Windows 7 32bit、CPU: Q9550 (2.83GHz)、RAM: 4.0GBです。現在、コマンドライン/MPを使用し、/Gmを使用していません。これによってコンパイル時間はかなり短縮されましたが、さらに早くする方法はないでしょうか。
- SSDを使用して、HDDを使用していた時よりどれくらい速度が上がった、とかそういったハード面でのお話でもかまいません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
コンパイル時間短縮に最も劇的に影響するのはCPUですね。 500MHz から 2.8GHzに乗り換えたら劇的に速くなりました。 (メモリも取り換えたので、厳密にはCPU + メモリですが・・・) でも、提示されたスペックですとこれ以上は難しいでしょう。 コンパイル時間短縮には、やはり、設計から見直す必要があります。 ひとつ挙げますと モジュール間の分割方法を見直し インクルードするヘッダを最小になるよう努力する。 クライアント(お客でなくて、情報を利用する側のソースファイルのこと) が知らないで済む情報はヘッダに書かずに static な変数として 実装側のソースファイルに隠してしまう。 こうすることで、余分な所で#includeしていたのが発見できるかも知れません。 #includeが減ればコンパイル時間は短縮できます。 モジュール分けが細かすぎないかも検討対象です。 あちこちでincludeしまくるとコンパイル時間は増大しますので、 密接に関連し、他のグループには殆ど関係ないようなソースファイルは 1つにまとめることで無駄なインクルードファイルの処理が減り、 コンパイル時間が短くなる可能性もあります。 ただまとめすぎると、可読性に支障が出ますので (10万行のソースファイルなんて読みたくもない!!) コンパイル時間と可読性を天秤にかけて 可読性を優先する判断もあり得ると思います。 こんな感じでしょうか?
その他の回答 (1)
- jacta
- ベストアンサー率26% (845/3158)
どんなソースなのかがわからないと、まともな回答はできません。 一般的には、テンプレートを闇雲に使うとコンパイル時間が非常に長くなる傾向があります。 また、長いのはコンパイル時間であって、リンク時間はありませんね?
お礼
回答ありがとうございます。 はい。 たいてい、時間がかかるのはコンパイル時間の方です。 リンクはそれなりに時間はかかりますが、気になるほどではありません。 C++でのテンプレートは活用しています。 コンパイル時間も大事ですが、可読性や便利さを優先しているためです。 そのため、コンパイル時間は大きく増えました。 他の方法で時間短縮できれば嬉しいので質問した次第です。
お礼
詳しい回答ありがとうございます。 設計として、クライアントが完全に知る必要のないメソッドなどは cppファイルの方で隠したりはしていました。 もしかすると、必要のない#includeや、必要のないprivateなメソッドがあるかもしれません。 また、単にクラス内でのデータ受け渡しのために用意した変数などは cppでのstatic変数として書き直してみたいと思います。 ありがとうございました。