悪夢のようなひどいMSテストフレームワークを使用してVisualStudio2008を実行しています。問題は、CPUを100%(クアッドコアでは25%)に送信していることです。
私の質問は、なぜVisualStudioを複数のコアで実行できないのかということです。確かに、M $は、これを機能させるためにスレッド化に十分なハンドルを持っている必要があります。
悪夢のようなひどいMSテストフレームワークを使用してVisualStudio2008を実行しています。問題は、CPUを100%(クアッドコアでは25%)に送信していることです。
私の質問は、なぜVisualStudioを複数のコアで実行できないのかということです。確かに、M $は、これを機能させるためにスレッド化に十分なハンドルを持っている必要があります。
4つのCPUすべてでVS2008を実行しています。この環境変数/プロジェクトフラグを設定するだけです。
/ MP
(C / C ++設定、詳細設定で設定できます。プロジェクト設定で設定できます)
編集:MPフラグは、数値を受け入れることもできます。たとえば、/ MP2は、2コアでのみ実行されることを意味します。/ MPのままにしておくと、最大数のコアで実行されます。
Edit2:MPフラグはおそらくコンパイラ専用です。
プロジェクト内で複数のプロジェクトを並列にコンパイルするだけでなく、並列にコンパイルする(!?)ようにVSに依頼することもできます。
ツール>オプション>プロジェクトとソリューション>ビルドする並列プロジェクトの最大数。
これにより、C ++とC#も並行してビルドされます。
誰かがこの古い質問に出くわした場合のために、VS2012 は標準機能として並列ビルドを導入しました。記事からの引用:
Visual Studio 2010 には、「並列プロジェクト ビルドの最大数」のオプションが含まれていました。制限の兆候はありませんでしたが、この IDE オプションは C++ プロジェクトでのみ機能しました。幸いなことに、この制限は Visual Studio 11 には適用されなくなりました。代わりに、他の言語でも並列ビルドが完全にサポートされるようになりました。これを表示するには、多数のプロジェクトを含むソリューションのビルドと同時に Process Explorer のコピーを実行します。「並列プロジェクト ビルドの最大数」で指定された数だけ、複数の MSBuild インスタンスが作成されていることがわかります。
Visual Studio 2010が少しリリースされたので、 「方法: 複数の CPU またはコアを備えたコンピューターを使用して単体テストをより高速に実行する」parallelTestCountで説明されているように、 MSTest の.testsettingsファイルの属性を利用するようにアップグレードすることを検討してください。
次のようないくつかの制限があります。
例、自動検出を意味する0を使用(デフォルトは1 ):
<?xml version="1.0" encoding="UTF-8"?>
<TestSettings
name="Release"
id="{GUID}"
xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Description>
These are default test settings for a local test run.
</Description>
<Execution parallelTestCount="0">
(...)
</Execution>
</TestSettings>
いくつかのブログでは、Visual Studio のプロジェクトを閉じてから再度開いて、その属性を追加/変更したことに気付く必要があるかもしれないと述べています。また、GUI を使用してテスト設定ファイルを編集する場合は、おそらくparallelTestCount属性を再度追加する必要があります。
また、多くのプロジェクトと長いビルド時間を持つユーザーのために、コマンドラインでマルチスレッドビルドを実行するためのマルチコアサポートを追加しました。マルチコアサポートを有効にするには、いくつかの新しいプロパティが必要です。MSBuildは、プロジェクトを効率的かつ効果的にスケジュールするためにすべての作業を管理します。MSBuildチームは、64 CPUマシンでいくつかのプロジェクトをビルドすることにより、この拡張機能をテストしました。
ですから、少なくともビルドに関しては、彼らはそれを始めました。
/ MPフラグはビルド専用であり、少なくともこのmsdnによるものです。
今、私はそれについて間違っていることを望みます、しかし私はそれがビルドのためだけであることをかなり確信しています。もちろん、これはまだ非常に便利です。
とても難しいと思います。巨大な既存のGUIを多用する非スレッドコードベースからマルチスレッドへ。私には10のように聞こえます。
しかし、私にはマルチコアを使用しているようです。Intellesenseはスレッド化されているようです。ビルドシステムにはマルチプロジェクトビルドがあり、C++マルチファイルビルドにも使用できます。
これらのツールに関する問題は、CPUの使用状況よりも少し深く聞こえます。