私は C++ で約 800 行のコーディングを行っています。cpp ファイルには 7 ~ 8 個のクラスがあり、オブジェクトもありませんが、プログラムのビルドには 7 秒かかります。これは C++ での私の最初のプログラムなので、正常かどうかを知りたいですか? またはその方法が多すぎますか?また、C++ の専門家が私のような初心者に役立ついくつかの洞察を共有できれば、本当に素晴らしいことです。何らかの形で役立つ場合は、Visual Studio 2010 を使用しています。
2 に答える
C++ をコンパイルする時間は、私がこれまでに使用したどの言語よりもおそらく異なります。
大きな違いを生む可能性があることの 1 つは、含めるヘッダーです。コードが 800 行しかない場合でも、そのうちのいくつかがsで#include
ある場合、コンパイラは簡単に数千行を参照する可能性があります (参考までに#include <windows.h>
、 は、通常、コンパイラが 10,000 行を超える行を参照することを意味します)。
最近、C++ チャット ルームに参加している何人かは、再帰的なテンプレートがたくさんある、特に厄介なコードの一部についていくつかのテストを行っていました。わずか 30 行のコードですが、設定するパラメーターによっては、1 時間以上のコンパイル時間を簡単に取得できます。また、ほとんどのコンパイラ (VC++10 および 11/2012 を含む) では、非常に簡単にコンパイルできます。コンパイラを完全にクラッシュさせます。
コードにヘッダーやテンプレート (特に再帰テンプレートなど) がほとんどまたはまったく含まれていない場合、コンパイルに 7.5 秒かかるのはかなり過剰に思えます。比較のために、同じサイズ (926 行) に近いプログラムをコンパイルして簡単なテストを行いました。0.3秒かかりました。私のマシンは5、6年くらい前のものなので、速度も最先端にはほど遠いです。同時に、その少量のコードをコンパイルする場合、CPU 速度はおそらく主な決定要因ではないことを付け加えておく必要があります。SSD は、より高速な CPU よりもはるかに大きな違いを生むと思います。
C++ は、他の多くの言語よりもコンパイルに時間がかかる複雑な言語です。その上、Visual Studio 自体には、Intellisense データベースなどを構築するための追加のオーバーヘッドがあります。実際のコンパイル後に考慮すべきリンク段階もあります。
Visual Studio が新しいプロジェクトを作成すると、通常、多くの Windows ヘッダー ファイルを含むプリコンパイル済みヘッダーが作成されます。これにより、800 行のソースに数千行が追加されます。
7 秒は少し遅いように見えますが、並外れているわけではありません。