1

core.dllVisual Studio の優れた Profile Guided Optimization を使用して最適化したいdll があります。ほとんどのコードは dll であり、実際には と呼ばれるライブラリにコンパイルされ、core.libそれが によってラップされcore.dllます。
このコードを単体テストするために、.exe というテスター実行可能ファイルもありますtest_core.exe。この実行可能ファイルは、そこからさまざまな機能にリンクしcore.libてアクティブにします。DLLcore.dllにはエクスポートがほとんどなく、主な機能を開始するのに十分なだけです。これらのエクスポートを使用して完全に単体テストすることはできません。
私が望むのは、 でいくつかのテストをアクティブにして PGO データ収集を行い、test_core.exeこの PGO データを使用して をリンクおよび最適化することcore.dllです。

Visual Studio フレームワークは、収集する実行可能ファイルと最適化された実行可能ファイルが同じになるように設計されているようです。
1 つのオプションは、関連するテストを内部に追加し、特別なエクスポートを使用してそれらを実行することですが、それは他の状況では使用されないテスト コードでcore.dll肥大化します。core.dll

4

2 に答える 2

0

Visual Studio フレームワークは、収集する実行可能ファイルと最適化された実行可能ファイルが同じになるように設計されているようです。

これは本当ですが、あなたの場合は、実行可能ファイルではなく DLL を最適化したいのです。スイッチを使用してスタティック ライブラリと DLL をコンパイルし、/GLスイッチを使用して DLL をリンクできます/LTCG:PGINSTRUMENT。これにより、インストルメント化された DLL が作成されます。test_core.exeイメージをインストルメント化する必要がないため、通常どおり (デバッグ モードまたはリリース モードで) コンパイルできます。次に、 を実行すると、 のみtest_core.exeの動作のプロファイルを含む PGC ファイルが生成されますcore.dll。このプロファイルは、core.dll再度コンパイルして/LTCG:PGOPTIMIZEスイッチを指定することにより、最適化に使用できます。test_core.exe一般的な使用シナリオの演習である限り、core.dll確実にメリットがあります。詳細については、これを参照してください。

于 2015-10-19T10:14:25.403 に答える