1

長時間実行されるメソッドに必要な時間を知るために、ac# モバイル アプリケーション内のパフォーマンスを追跡したいと考えています。目標は、メソッドのレベルでパフォーマンスを知ることです。このトレースは実行時に決定されます。

最初に思いついたアイデアは、グローバル変数「doWeHaveToTrace」を維持し、追跡可能なメソッドが呼び出されるたびにチェックし、その変数が true の場合に追跡することです。この場合、おそらく Logger または TraceListener を使用して、トレース情報をファイルに書き込みます。

しかし、各メソッドで変数をチェックする必要があり、ロガー呼び出しをコーディングする必要があるため、このメカニズムはかなり重いと思います。

before()アスペクト プログラミング (およびメソッドにトレース コードを挿入するafter()) も考えましたが、このプロジェクト内でアスペクト プログラミングを許可することはできないと思います。

だから私は疑問に思っていました.そのようなパフォーマンスの追跡を提供できる他の良いメカニズムはありますか? メソッド全体をトレースすることは可能ですか? また、実行時にトレースを停止または再開することを決定するには?

4

3 に答える 3

2

何を追跡しようとしているのか正確にはわかりませんが、実行時間の長いメソッド間の時間を追跡しようとしている場合は、おそらく.NET Profiling APIにフックする方がよいでしょう。使い方のチュートリアルはこちら。

商用プロファイラーは、別のより単純なオプションです。

于 2009-05-04T15:53:44.273 に答える
0

.NETでトレースとデバッグを使用して条件付きでコンパイルする方法についてお読みください(.NET を使用していると仮定します)。TraceクラスとDebugクラスは、開発目的で必要なすべての実行時出力を提供します。次に、TRACE コンパイラ ディレクティブを削除するだけで、デプロイされたアプリケーションのすべてのデバッグ/トレース コード (および関連するランタイム オーバーヘッド) を削除できます。

また

外部プロファイリング アプリケーションを使用して、パフォーマンスとメモリのプロファイリングを行うことができます。ここを参照してください (StackOverflow.com から): What Are Some Good .NET Profiler?

于 2009-05-04T15:53:55.567 に答える
0

IDE の下のデスクトップ マシンで実行し、クロックやサンプリングなどの通常の操作を実行できますか?

時間がかかっていて、スピードアップできるものを見つけるはずです。

于 2009-05-05T23:17:24.713 に答える