これはプログラミングの問題ではないことを知っていますが、関連があります。
私はかなり大きなクロスプラットフォームプロジェクトに取り組んでいます。WindowsではVC ++ 2008を使用します。Linuxではgccを使用します。プロジェクトには約40kのファイルがあります。Windowsは、同じプロジェクトをコンパイルおよびリンクする際に、Linuxよりも10倍から40倍遅いです。どうすれば修正できますか?
Linuxでは20秒、Windowsでは3分を超える単一の変更増分ビルド。どうして?Linuxに「ゴールド」リンカーをインストールして、その時間を7秒まで短縮することもできます。
同様に、gitはWindowsよりもLinuxで10〜40倍高速です。
gitの場合、gitがWindowsを最適な方法で使用していない可能性がありますが、VC ++ですか?Microsoftは自社の開発者をできる限り生産的にしたいと考え、より高速なコンパイルはそのための長い道のりになると思います。たぶん彼らは開発者にC#を勧めようとしているのでしょうか?
簡単なテストとして、多数のサブフォルダーを含むフォルダーを見つけて、簡単なテストを行います
dir /s > c:\list.txt
Windowsの場合。キャッシュから実行するように、2回実行して2回目の実行の時間を計ります。ファイルをLinuxにコピーし、同等の2回の実行を行い、2回目の実行の時間を計ります。
ls -R > /tmp/list.txt
まったく同じ仕様のワークステーションが2台あります。12gigのRAM、8コア、3.0GHzのHP Z600。〜400kファイルを含むフォルダーでは、Windowsは40秒かかり、Linuxは1秒未満かかります。
Windowsを高速化するために設定できるレジストリ設定はありますか?何ができますか?
コンパイル時間に関連するいくつかのわずかに関連するリンク。必ずしもI / Oとは限りません。
どうやらWindows 10(Windows 7ではない)には、プロセスを閉じるとグローバルロックが保持されるという問題があるようです。複数のコア、したがって複数のプロセスでコンパイルすると、この問題が発生します。
この
/analyse
オプションはWebブラウザーをロードするため、パフォーマンスに悪影響を与える可能性があります。(ここでは関係ありませんが、知っておくと便利です)