コンパイル時間を短縮する方法について。
コンパイル時間を短縮する方法について詳しい方がいましたら、
どうすれば短縮できるか教えていただきたいです。
私の環境は
IDE: VisualStdio2008 ExpressEdition
OS : Windows7 32bit
CPU: Q9550 (2.83GHz)
RAM: 4.0GB
現在、コマンドライン/MPを使用し、/Gmを使用していません。
これによってコンパイル時間はかなり短縮されましたが、
さらに早くする方法はないでしょうか。
SSDを使用して、HDDを使用していた時よりどれくらい速度が上がった、とか
そういったハード面でのお話でもかまいません。
No.2ベストアンサー
- 回答日時:
コンパイル時間短縮に最も劇的に影響するのはCPUですね。
500MHz から 2.8GHzに乗り換えたら劇的に速くなりました。
(メモリも取り換えたので、厳密にはCPU + メモリですが・・・)
でも、提示されたスペックですとこれ以上は難しいでしょう。
コンパイル時間短縮には、やはり、設計から見直す必要があります。
ひとつ挙げますと
モジュール間の分割方法を見直し
インクルードするヘッダを最小になるよう努力する。
クライアント(お客でなくて、情報を利用する側のソースファイルのこと)
が知らないで済む情報はヘッダに書かずに
static な変数として 実装側のソースファイルに隠してしまう。
こうすることで、余分な所で#includeしていたのが発見できるかも知れません。
#includeが減ればコンパイル時間は短縮できます。
モジュール分けが細かすぎないかも検討対象です。
あちこちでincludeしまくるとコンパイル時間は増大しますので、
密接に関連し、他のグループには殆ど関係ないようなソースファイルは
1つにまとめることで無駄なインクルードファイルの処理が減り、
コンパイル時間が短くなる可能性もあります。
ただまとめすぎると、可読性に支障が出ますので
(10万行のソースファイルなんて読みたくもない!!)
コンパイル時間と可読性を天秤にかけて
可読性を優先する判断もあり得ると思います。
こんな感じでしょうか?
詳しい回答ありがとうございます。
設計として、クライアントが完全に知る必要のないメソッドなどは
cppファイルの方で隠したりはしていました。
もしかすると、必要のない#includeや、必要のないprivateなメソッドがあるかもしれません。
また、単にクラス内でのデータ受け渡しのために用意した変数などは
cppでのstatic変数として書き直してみたいと思います。
ありがとうございました。
No.1
- 回答日時:
どんなソースなのかがわからないと、まともな回答はできません。
一般的には、テンプレートを闇雲に使うとコンパイル時間が非常に長くなる傾向があります。
また、長いのはコンパイル時間であって、リンク時間はありませんね?
回答ありがとうございます。
はい。
たいてい、時間がかかるのはコンパイル時間の方です。
リンクはそれなりに時間はかかりますが、気になるほどではありません。
C++でのテンプレートは活用しています。
コンパイル時間も大事ですが、可読性や便利さを優先しているためです。
そのため、コンパイル時間は大きく増えました。
他の方法で時間短縮できれば嬉しいので質問した次第です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ソフトウェア 社内でのETCカードの管理方法で良い案があれば教えて下さい 社用でリース車等を使用してETCカードを 1 2023/01/17 13:37
- 物理学 光速度に近い速度で移動しても、時間や時計の動きが遅くなる?等は、あり得ない。 3 2022/09/24 00:47
- その他(悩み相談・人生相談) 入浴を早く終わらせられる方法を教えてください。 いつも服脱いでから〜入浴〜部屋に戻るまで1時間半かか 6 2023/05/08 23:05
- 洗濯機・乾燥機 7kgのドラム式洗濯機を使っています。 毛布を乾燥までかけると5時間以上かかります。これは普通ですか 5 2023/01/05 16:10
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
- その他(スマートフォン・携帯電話・VR) タイムラプス機能について 1 2022/04/08 01:41
- その他(ブラウザ) ネットでの検索が速く出来ません 4 2022/08/28 15:34
- 建築学 ネットワーク工程表(1級管工事施工管理) 5 2022/08/24 08:17
- 運転免許・教習所 免停についてお伺いします。 1 2023/08/16 20:30
- 電子レンジ・オーブン・トースター モレキュラーシーブの再利用法について質問です。 当方趣味でドライフラワーをやっています。 モレキュラ 7 2023/04/14 20:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<math.h>があるのにsqrtが・...
-
VBAを何回も作り直して、容量が...
-
1 つ以上の複数回定義されてい...
-
” OS ビルド ” の意味が分か...
-
RPGでプログラムからソースファ...
-
Makefile作成時の拡張子.oとは?
-
outportb関数について
-
セミコロンについて
-
複数のサブディレクトリを一緒...
-
VB5の逆コンパイルについて
-
【VC++6.0(MFC)】警告「LINK : ...
-
「fatal error C1189」を回避す...
-
PRO*C コンパイルエラー
-
2G以上のファイル操作
-
定数式とはどういう意味でしょ...
-
C言語でヘッダファイルにグロー...
-
MFCのエラーについて
-
戻り値について
-
CImageクラスの使用について
-
Fortranについて教えてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
VBAを何回も作り直して、容量が...
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
Makefile作成時の拡張子.oとは?
-
エクセルVBAではRound...
-
1 つ以上の複数回定義されてい...
-
コンパイルエラー:ユーザ定義...
-
セミコロンについて
-
ILSpyで、デコンパイルできない。
-
[c++] <pthread.h>がinclude で...
-
クリティカルエラー Expressio...
-
マクロ コンパイルがグレーバック
-
PRO*C コンパイルエラー
-
外部シンボル "_main"は未解決です
-
他のLinuxでも動くa.outの作り方
-
<math.h>があるのにsqrtが・...
-
戻り値について
-
pyc 編集 閲覧
-
C++コンパイル時に『 C1083: in...
おすすめ情報