2
私のアプリケーションには、 "Loader.exe"という実行可能ファイルがあります。 DLLファイルを特定のフォルダで検索し、それらを1つずつロードします。次に、ユーザーは実行するプラグインを選択できます(プラグインにはウィンドウとビジネスロジックがあります)。これは私が現在実装しているプラグインアーキテクチャの一種です。動的DLLをロードする.NETアプリケーションのプロファイリング
問題点は、WPFとプロファイラ用の実行時エクスプローラツールでは、ロードされたDLL内で何が起こっているのかを見ることができないということです。例えば。 CLRプロファイラはデータをまったく収集しません。
プロジェクトのDLL読み込み部分を書き直すことなくこれを修正する方法はありますか?そして、率直に言って、なぜこれらのプロファイラーはロードされたDLLコードを見ませんか? VSのデバッグは、それらで素晴らしい動作します。
VSデバッグはこれらの機能が優れているため、ランダムな一時停止を使用してパフォーマンスの問題を見つけることができます。 (http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024)すばやく、汚れていて、安く、(IMHO)最高です。 –
はい、デバッガは正常に動作します。そして、いくつかの「プロファイリング」を行うために使用することができます。しかし、私はいつもデバッグするのが簡単ではない複雑なコードを扱っています。さらに、WPFバインディングを使用してトリガできるものやデバッグメソッドを呼び出すことはあまり明らかではありません。私はVSデバッガが好きです。何かをするのに使うことができると私は同意しますが、実際のプロファイラは何が起きているのか、どんな方法がそれほど効率的でないのかを概観するのにはずっと良い選択です。 – Jefim
@ Jefim:一般に、MS製品は非常に高品質ですが、プロファイリングは一般的な誤解の影響を受けやすい傾向があります。 「何が起きているのか、どの方法がそれほど効率的でないのか」の概要をあなたに示しています。メソッドは一般的に非効率的ではなく、プロファイラーは実際に何が起きているかを伝えません。彼らはちょうどものを測定する。無駄な時間を取り除きたいのであれば、コールツリーの樹木外科医のように考える必要があります。どんなアクティビティが最も時間を費やしているのか、どのステートメント(メソッドではない)に集中するのかを示すスタックショットがあります。 –