1

重複の可能性:
C# でメソッドをプロファイリングして、実行にかかる時間を知る

メソッドの実行にかかる時間を確認する必要があります。

たとえば、プロジェクトでGetTypes()メソッドを実行するのにかかる時間を知る必要があります。using System.Reflection

foreach (Type t2 in a.GetTypes())
{
    Console.WriteLine(t2);
}

最も簡単な方法は、プロファイラーを実行するかStopwatch、GetTypes() を使用するすべてのソース ファイルを挿入することですが、GetTypes() メソッドをフックして、GetTypes() メソッドを実行する前後にストップ ウォッチを開始および終了できることを願っています。

sw = Stopwatch.StartNew();
foreach (Type t2 in a.GetTypes())
{
    Console.WriteLine(t2);
}
sw.Stop();

C#/.NET(Mono)でできますか? そうでない場合、ソース コードを変更するかプロファイラーを実行する以外に選択肢はありますか?

4

1 に答える 1

1

あなたの例では:

sw = Stopwatch.StartNew();
foreach (Type t2 in a.GetTypes())
{
    Console.WriteLine(t2);
}
sw.Stop();

GetTypes よりもはるかに多くのことを測定しており、Console.WriteLine などもすべて測定しています。

フック (Moles など) を記述すると、パフォーマンスに大きく影響する可能性があります (ただし、これまでにそのようなことをしたことがないことは認めざるを得ませんが、Moles を含む単体テストを実行すると、パフォーマンスの違いに気付きます)。

最も簡単な (そして最も安価な) オプションは、次の (無料の) プロファイラーのいずれかをダウンロードすることです。

AQTime (無料版) http://smartbear.com/products/free-tools/aqtime-standard/

SharpDevelop (プロファイラーあり): http://www.icsharpcode.net/opensource/sd/download/

XTE プロファイラーhttp://www.xteprofiler.com

これらのいずれも、詳細な情報を提供します。ただし、本当に自分でやりたい場合は、SharpDevelop のソースをダウンロードして、プロファイラーがどのように作成されたかを調べてみてください。

于 2011-06-06T10:59:38.770 に答える