0

最初は、コードは非常に単純で (500 行未満)、コンパイルは 5 秒以内で完了します。

しかし、コードの成長に伴いコンパイルはますます遅くなります (c に約 20 秒かかり、コードの成長に伴いさらに時間がかかります)。

現在私が持っているファイルは次のとおりです。

Socket、AsyncSocket、WebsocketHelper、AsyncWebsocketServer、MonitorMessage、HtmlHelper、JsonHelper(Janssonライブラリの抽象化)、StringHelper、SqlHelper、Logger、AddLocalServerWindow、LandPointWindow、ServerMonitorProxyDlg

本当の問題は、プロジェクトに少し変更を加えたいだけなのに、毎回コンパイルに時間がかかることです。

例えば

何かをテストするために値を変更したいだけです。コンパイルには約20秒かかります

そして、JsonHelper::buildArray() 関数を追加したいのですが、コンパイルには少なくとも 2*20 秒かかります。

関数の実装が完了したら、正しくコンパイルできるかどうかをコンパイルします。最初の 20 秒です。次に、このメソッドをシステムに統合してコンパイルします。さらに 20 秒かかります。実際、私は約 5 行のコードを書くたびに、構文エラーがないかどうかを確認するためにコンパイルします (このような状況では、これは悪い習慣でしょうか?)。

もう 1 つの問題は、コードの構文を常に (10 ~ 20 行ごとに) 間違えているため、コードを何度も再コンパイルする必要があることです。今書いたコードにコンパイル時間はほとんど費やされず (この部分は私が本当に気にかけていることです)、多くのコンパイル時間は安定したコードに費やされています (エラーはありません、前に書いたものです)。

この状況を改善する方法は?どんな提案でも大歓迎です

4

1 に答える 1

4

C#のコンパイル時間が問題になることはめったにありません。Microsoft C#コンパイラは、C++コンパイラと比較して非常に高速です。私は大規模なC++プロジェクトに取り組んでおり、長いビルド時間を軽減するために次のことを行っています。

  • 依存関係を減らします。ヘッダーファイル内の型へのポインターまたは参照のみを使用する場合は、インクルードする代わりに型を前方宣言します。
  • より高速なマシンを入手してください。16GBのRAMを搭載した8コアi7で開発しています。これは、ソースツリー全体がキャッシュに収まるのに十分な大きさです。〜135000行のコードが76秒でコンパイルされます。変更されたファイルが少ないため、これは多くの場合10秒に相当します。
  • アプリケーションによっては、より高速なコンパイラを使用してください。クロスプラットフォームアプリケーションを開発するという利点があるので、Linuxで開発し、Microsoft VisualC++よりも数倍高速なg++を使用します。clangはまだ高速です。
  • インターフェイスの計画により多くの時間を費やしてください。ヘッダーを頻繁に変更しないようにしてください。適度に使用する場合にこれを支援できることの1つは、PIMPLイディオムです。
于 2012-12-21T13:35:43.420 に答える