MSYS を使用して何かをコンパイルすると、./configure
ステップにmake
. ただし、Linux の同じプロセスでは、configure が高速で make が低速です。これは、私のシステムを動かなくなっている MSYS の設定だけですか? 誰にも解決策がありますか?
3 に答える
典型的なconfigure
スクリプトは、多くの小さなサブプロセスを開始します。Unix ライクなオペレーティング システムでは、これはfork()
andexec()
関数呼び出しで行われます。これらの呼び出しには、保持する必要がある非常に特殊なセマンティクスがあります (たとえば、フォーク後のコピー オン ライト共有メモリ)。Windows では、CreateProcess()
非常に異なるセマンティクスを持つサブプロセスが作成されます (たとえば、親からメモリ空間を完全に分離します)。Unix ライクなスクリプトとプログラムを正しく実行するために、MSYS は多くのエミュレーション作業を行って、Windows での新しいプロセスの作成fork()/exec()
を Unix のように機能させる必要があります。これは、これらの関数呼び出しをネイティブに提供する OS よりも遅くなります。
実行中のウイルス スキャナを無効にすることもできます。実行可能ファイルがロードされるたびに再スキャンされるため、スクリプトのパフォーマンスが完全に低下します。
ウイルス対策を実行していない場合でも、Windows Defender を忘れないでください。(プログラムの読み込み時間にどのような影響があるかはわかりませんが、ユーザー アカウント制御を無効にすることもできます。)
多くのディスクアクセスが関係しているため、私見では物事が大幅に遅くなります。たとえば、configure は実行するテストの一部としてコンパイルされる一時的なソース コードを作成します。これにより、再度削除する必要があるオブジェクト ファイルが作成されます。構成を高速化するために私が行っているのは、ビルドしたいソースを RAM ドライブに抽出し、そこで構成およびコンパイルすることです。無料の ImDisk (http://www.ltr-data.se/opencode.html/#ImDisk) を使用することをお勧めします。