0

私は他のプログラム用に多くの.NETベースのプラグインを作成しています。これらのプラグインは通常、起動するネイティブアプリケーションに依存するDLLとしてコンパイルされます。私はEquatecのプロファイラーを使用してきましたが、これはうまく機能しますが、メモリ使用量をプロファイリングする機能など、より多くの機能を備えたものが必要です。

RedGateのAntProfilerを試しましたが、私が見る限り、DLLをプロファイリングする方法はありません。唯一のオプションは、EXEのプロファイルを作成することです。

したがって、私の質問は、EXEではなく単一のライブラリDLLをプロファイリングできる他のプロファイリングツールが利用できるかどうかです。Equatecのように、プロファイルコードをライブラリに挿入する必要があると思いますか?

4

3 に答える 3

1

はい、それはこのように機能します。DLLは単なるコードの塊であり、EXE内のコードとマージされます。DLLはメモリを「所有」できませんが、AppDomainは所有します。ただし、DLLからのコードにどれだけの時間が費やされているかを確認できます。

それ自体は主要なメモリ割り当てを行わないが、DLL内のクラスのメソッドを呼び出すテストプログラムを作成する場合、問題なくメモリ使用量をDLLに帰することができます。ただし、このようなテストプログラムを作成し、実際のプログラムでDLLコードを使用する方法に似せることは、それほど簡単ではありません。

于 2010-03-12T02:55:09.637 に答える
0

.NetMemoryValidator.NetPerformanceValidatorはどちらも、dllだけをプロファイリングできます。

設定ダイアログの「フックされたDLL」の部分で、関心のある(または関心のない)DLLを指定する必要があります。次に、アプリケーションを起動します。指定されたDLLからのデータのみが収集されます。

完全な開示:私はこれらのツールを作成する会社のソフトウェアエンジニアです。

于 2010-03-19T19:59:10.060 に答える
0

これはもう関係ないかもしれませんが、後世のためにここに載せると思いました。RedgateAntsプロファイラーでは、カスタムフィルターを使用して単一のdllをプロファイリングできます。

http://www.red-gate.com/supportcenter/content/ANTS_Profiler/articles/profiling_single_dotnet_assembly

ANTS Profiler 3プロジェクトウィザードを使用して、通常の方法で「CoolApp」のパフォーマンスプロファイリングを設定します。ウィザードの最後の画面は、プロジェクトをカスタマイズして、プロファイリングを1つのライブラリのみに制限できるポイントです。プロファイルされるアプリケーションの領域を制限するためにカスタムフィルターを使用することを指定します。

以下に示すように、カスタムフィルタを編集し、特定の名前空間のプロファイリングのみに関心があることを指定します。この場合、ANTSProfilerがRedGate.Library1名前空間の一部であるメソッドのみをプロファイリングするようにするフィルターを設定します。これはまさに私たちが望んでいることであり、これでプロファイリングを開始する準備が整いました。

これで、通常の方法でプロファイリングを進めることができます。ただし、スナップショットを作成するか、アプリケーションを閉じることによってパフォーマンスプロファイリングの結果を取得すると、RedGate.Library1.dllのメソッドに関するデータのみが含まれます。

リンクが切れた場合に備えて、ウェブサイトからのテキストを含めました。

于 2012-05-25T15:33:47.743 に答える