コンパイル時間を短縮する方法について

このQ&Aのポイント
  • コンパイル時間を短縮する方法について詳しい方がいましたら、どうすれば短縮できるか教えていただきたいです。
  • 私の環境はIDE: Visual Studio 2008 Express Edition、OS: Windows 7 32bit、CPU: Q9550 (2.83GHz)、RAM: 4.0GBです。現在、コマンドライン/MPを使用し、/Gmを使用していません。これによってコンパイル時間はかなり短縮されましたが、さらに早くする方法はないでしょうか。
  • SSDを使用して、HDDを使用していた時よりどれくらい速度が上がった、とかそういったハード面でのお話でもかまいません。
回答を見る
  • ベストアンサー

コンパイル時間を短縮する方法について。

コンパイル時間を短縮する方法について。 コンパイル時間を短縮する方法について詳しい方がいましたら、 どうすれば短縮できるか教えていただきたいです。 私の環境は IDE: VisualStdio2008 ExpressEdition OS : Windows7 32bit CPU: Q9550 (2.83GHz) RAM: 4.0GB 現在、コマンドライン/MPを使用し、/Gmを使用していません。 これによってコンパイル時間はかなり短縮されましたが、 さらに早くする方法はないでしょうか。 SSDを使用して、HDDを使用していた時よりどれくらい速度が上がった、とか そういったハード面でのお話でもかまいません。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLK314
  • ベストアンサー率55% (84/152)
回答No.2

コンパイル時間短縮に最も劇的に影響するのはCPUですね。 500MHz から 2.8GHzに乗り換えたら劇的に速くなりました。 (メモリも取り換えたので、厳密にはCPU + メモリですが・・・) でも、提示されたスペックですとこれ以上は難しいでしょう。 コンパイル時間短縮には、やはり、設計から見直す必要があります。 ひとつ挙げますと モジュール間の分割方法を見直し インクルードするヘッダを最小になるよう努力する。 クライアント(お客でなくて、情報を利用する側のソースファイルのこと) が知らないで済む情報はヘッダに書かずに static な変数として 実装側のソースファイルに隠してしまう。 こうすることで、余分な所で#includeしていたのが発見できるかも知れません。 #includeが減ればコンパイル時間は短縮できます。 モジュール分けが細かすぎないかも検討対象です。 あちこちでincludeしまくるとコンパイル時間は増大しますので、 密接に関連し、他のグループには殆ど関係ないようなソースファイルは 1つにまとめることで無駄なインクルードファイルの処理が減り、 コンパイル時間が短くなる可能性もあります。 ただまとめすぎると、可読性に支障が出ますので (10万行のソースファイルなんて読みたくもない!!) コンパイル時間と可読性を天秤にかけて 可読性を優先する判断もあり得ると思います。 こんな感じでしょうか?

matoro6173
質問者

お礼

詳しい回答ありがとうございます。 設計として、クライアントが完全に知る必要のないメソッドなどは cppファイルの方で隠したりはしていました。 もしかすると、必要のない#includeや、必要のないprivateなメソッドがあるかもしれません。 また、単にクラス内でのデータ受け渡しのために用意した変数などは cppでのstatic変数として書き直してみたいと思います。 ありがとうございました。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

どんなソースなのかがわからないと、まともな回答はできません。 一般的には、テンプレートを闇雲に使うとコンパイル時間が非常に長くなる傾向があります。 また、長いのはコンパイル時間であって、リンク時間はありませんね?

matoro6173
質問者

お礼

回答ありがとうございます。 はい。 たいてい、時間がかかるのはコンパイル時間の方です。 リンクはそれなりに時間はかかりますが、気になるほどではありません。 C++でのテンプレートは活用しています。 コンパイル時間も大事ですが、可読性や便利さを優先しているためです。 そのため、コンパイル時間は大きく増えました。 他の方法で時間短縮できれば嬉しいので質問した次第です。

関連するQ&A

  • ビルドから除外されたソースのコンパイル

    現在、Visual Studioを使用してある巨大なプロジェクトを開発しています。言語は C++です。 このプロジェクトには、ソースファイル(*.cpp)が全部で1000以上もありま す。百ではありません、千です。 そのため、プロジェクトをビルドするのに30分以上もかかり、開発効率が非常に悪 くなっています。 コンパイル・リンクとも相当の時間がかかっています。実感としては、cpp1ファイ ルにつきコンパイル1秒かかっています。 (なぜそんなに大量のcppが必要なのかというのはここでは置いといてください) そこで、次のような方法でビルド時間を短縮する方法を考案しました。 (1)ある一定数のソースファイルのプロパティで「ビルドから除外」とする。 (2) (1)でビルドから除外したソースファイルを全てインクルードしたソース ファイルを作成し、プロジェクトに追加する。 [1つにまとめたソースファイルのイメージ] #include "src001.cpp" #include "src002.cpp" #include "src003.cpp" ・・・ #include "src999.cpp" ソースファイルを1つにまとめてしまう事による弊害は全て解決したものとします。 以上により、プロジェクト内のソースファイル数を100以下にまで減らし、無事ビ ルド時間が大幅に短縮されました。 と、ここまでは良かったのですが、一つ問題があります。 それは、「ビルドから除外」したソースファイルを単独でコンパイル出来なくなって しまうのです。(ここでは、そういうことをしたいという要望があると思ってくださ い) ソリューションエクスプローラでソースファイルを右クリックし、出てくるメニュー リストの「コンパイル」が無効表示され選択できません。 もちろん、コンパイルコマンド(cl.exe)をコマンドラインから直接叩いてやればい くらでも出来ますが、出来ればIDEから簡単な操作で行いたいのです。 また、チームで開発しているため、コンパイルする時だけソースファイルの設定を変 更するというようなことはしたくないのです。 この問題に対して、何か良い手段はないでしょうか? プロジェクトを複数モジュールに分離して・・・ とか、 プリコンパイル済みヘッダを利用して・・・ とか、 リビルド時間を短縮するためソース間の依存関係を減らして・・・ というような、質問の内容を超える回答はご遠慮ください。 そのようなことは、十分ではないかも知れませんが検討済みです。

  • XPの起動時間を短縮する方法は?

    ノートパソコン(PCGFX55G/BP,XPSP2)を使用しているんですが、スペックが低いこともあり、起動までに時間が結講かかります。初期設定にソフトが入り過ぎているのかも知れません。ソフトをダウンロード・インストールしたことも何度かあります。セキュリティソフトは入れています。 起動時間を短縮するためには、どのようにすればいいのでしょうか。パソコンの使用暦は長いのですが、このようなことに全く無知です。起動時間を短縮する具体的な方法・手順をご教示願えないでしょうか。よろしくお願い致します。

  • 上書き時間を短縮する方法はありますか?

    エクセルで開くことの出来る「CSVファイルのシート(マイドキュメントの集計フォルダにある)」に、あるフリーソフトの一部の出力機能を使用して毎回毎回、外付けハードディスク(BUFFALO:HD-H250U2)にある、データ(エクセルワークシートで言いますと約500行・約50列)を上書きさせてるんですが、上書き時間が約60秒かかってしまいますが、この上書き時間をもっと短縮することはできますでしょうか? (このあるフリーソフトには、時間をもっと短縮したり、元データを切り落としたりする設定等は調べましたが装備されていないと思います。) HDの、書き込みキャッシュは、[パフォーマンスのために最適化する(書き込みキャッシュを有効)]にチェックはしてあります。 いろいろと、考えましたが、良い案が見つかりません。 1、「CSVファイルのシート」にマクロ等、または何かの設定で、20列以降を「上書き拒否」することは? 2、60秒を→たとえ、55秒・57秒でもいいので、短縮する方法は? 3、「CSVファイルのシート」をデスクトップ、C:ドライブ、マイドキュメント、など、どこに置けば、   一番時間の短縮につながりますか? 4、「CSVファイルのシート」をその都度、上書き前に空白にしておいてもほとんど変わらないですか? 5、その他の、方法は?。 以上、良い案がございましたらよろしくお願い致します。

  • 干し野菜の乾燥時間短縮について

    干し野菜を作る際、時間を短縮する方法はどういったものがあるでしょうか? 「乾燥専用の機械を使用する」といったもの以外が望ましいです。 ・扇風機を当てる ・なるべく薄くスライスする といった方法はやったことがあります。 WEBで検索すると、ドライフラワーを作る際に乾燥剤(シリカゲル)を使うらしいですが、 乾燥剤を使って乾燥時間を短縮できた方はいらっしゃるでしょうか? よろしくお願いします。

  • 使い捨てカメラのストロボ充電時間短縮方法について

    使い捨てカメラのストロボ充電時間短縮方法について質問させて下さい。 「写るんです」など使い捨てカメラのストロボ用電源には 1.5Vの乾電池が1本使用されているそうですが、この電池の 本数を並列接続で増やした場合、充電に掛かる時間は 短縮されるものなのでしょうか。 また、この他に充電時間を短縮させ連続発光させられるような 方法はありますでしょうか。 撮影用の光源ではなく演出用の道具として利用してみようと 考えている為、LEDよりも明るければ光量は落ちても 構わないと考えています。 何卒ご回答のほど宜しくお願い致します。

  • コンパイルについて。

     初めまして。 JAVA初心者です。つい先日勉強を始めた所なのですが、 コンパイルの方法がわかりません。  同じような質問があり、回答を拝見して色々と試してみたのですが、何度行ってもエラーが出てしまいます。 エラーは、コンパイル時に javac は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。 というものです。  環境変数も、きちんと確認してから登録しましたし (コマンドプロンプトでpathと書くと表示されるのと同 じ値です)ソースファイルも教科書と何度も照らし合わ せ、間違いありません。  使用しているOSは windows2000。 エディタはサクラエディタ。 使用している開発環境は、SDK1.4です。 そこの所もいまいちよくわからないのですが、 java.comというサイトの手動ダウンロードからwindows版 をDLし、インストールしました。    お手数をおかけいたしますが、教えていただけると助か ります。よろしくお願い致します。

    • ベストアンサー
    • Java
  • ノートンのスキャン時間の短縮

    ノートン2005を使用しています。 システム上は問題なく稼動しているのですが、日に日にファイルが多くなり今日のスキャンでは約38万ファイルで1時間40分くらいかかりました。 スキャン中は他の作業が遅くなるのでスキャン時間を短縮したいのですが、何か良い方法はないでしょうか? アドバイスをよろしくお願いします。

  • パーツほぼ全取替え、Pen4とAthlon64のパフォーマンスの差、起動時間の短縮

    インターネット、オフィス用途(MS-OFFICE)をしますが、3D、オンラインゲーム、エンコは全然しません。 目的は起動時間の短縮にあります。 現在のPCはWinXP Pro SP2にて常駐を極力排し、avastをウイルス対策として使っていますが、自動ログオンで、デスクトップが現れるまで起動時間は45秒です。これを20秒以下にしたいです。 現構成 CeleronD 325 2.53GHz/PC2700 512MB AOpen AX4SG-UL i865G/Maxtor 80GB IDE 7200rpm VGA内蔵/SW 400W安物 [Athlon64構成例1] Athlon64 3500+ 2.2GHz/Venice \32,000 1GB PC3200 x2 \12,000 x2 MSI K8N Neo4 Platinum Socket939 nForce4Ultra \19,000 Innovision GeForce 6200TC/64-MAX256MB D-sub15Pin PCI-Express \8,000 KMRK-500B [ 500W ] 『鎌力リビジョンB』 \10,000 計 \93,000 [Athlon64構成例2] Athlon 64 3800+ 2.4GHz/Venice \44,000 RAM 同上/M/B 同上/VGA 同上/電源 同上 計 \105,000 [Intel Pentium4構成例1] Pentium4 Prescott 3.40E FSB=800MHz/L2=1M/Socket478 \31,500 RAM 同上 MSI 865PE Neo2-PFS Platinum Edition \9,700 ASUSTek RADEON 9250 128MB (128bit) A9250GE/TD/128M \7,500 電源 同上 計 \82,700 [Intel Pentium4構成例2] Pentium4 560J 3.6GHz/L2=1MB/Socket775 \47,000 512MB DDR2 PC2-4300 x2 = 1GB \11,500x2 MSI 915P Neo2 Platinum(M) LGA775 Intel 915P \16,000 VGA 同上/電源 同上 計 \103,500 そこで質問です。 1) Athlon64は 3500+ と 3800+ですが、差は上記に挙げた使用目的ではどのような結果が出るでしょうか。 Pentium4では、3.4GHzと3.6GHz。この差は。 2) そもそも、PCの起動時間を短縮するのにあたって、改善点が間違っていますか。たとえば、現構成のままでHDDをSCSIの15000rpmのものに換装したら、どうなりますか。

  • 皿洗い時間を短縮する方法

    タイトルの通りです。みなさん、教えてください。 夫と2人暮らしなのに、夕食に使用した食器をトリビアの泉が始まったときに片付け始めて、トリビアの放送が終わるまでかかってしまった今夜はさすがに、皿洗いをどうにかしたいと思いました。 ちなみにうちは古い賃貸住宅なので、シンクを改造するとか、食器洗い機を置くというのはできません。 それ以外の方法で、皿洗いの時間を短縮する方法を教えてください。

  • Windows Installer 2.0 でのコンパイル

    「Windows Installer 2.0」を使用して、拡張子が「.c」のファイルのコンパイルって可能なのでしょうか? 可能であれば、コマンド・環境設定方法など教えてください。よろしくお願いします。 OS:Windows 2000 SP4

専門家に質問してみよう