6

Windows で .NET プログラム (C#) のパフォーマンス ベンチマークを行う必要がありますが、Windows の世界ではあまりベンチマークを行っていません。Windows 2000/XP パフォーマンス モニタを使用してカスタム カウンタを使用することを検討しましたが、これは私が望んでいるものではないと思います。

Windows XP にはこれに適したシステム機能がありますか、それとも System.Diagnostics.Stopwatch [編集] を使用して手動で解釈するためにテキスト ログを書き込む必要がありますか、それとも他に何かありますか?

編集:それ以上のものはありSystem.Diagnostics.Stopwatchますか?

4

6 に答える 6

8
using System.Diagnostics;
....

Stopwatch sw = new Stopwatch();

sw.Start();

// Code you want to time...

// Note: for averaged accuracy (without other OS effects), 
//       run timed code multiple times in a loop 
//       and then divide by the number of runs.

sw.Stop();

Console.WriteLine("Took " + sw.ElapsedTicks + " Ticks");
于 2008-09-28T03:17:30.020 に答える
5

マイクロベンチマークについては、MeasureIt がとても気に入っています ( http://msdn.microsoft.com/en-us/magazine/cc500596.aspxからダウンロードできます)。これは、CLR のパフォーマンス アーキテクトである Vance Morrison によって書かれたテスト プロジェクトです。現在、多数の .Net/CLR コア メソッドの優れたベンチマーク セットがあります。その最良の部分は、テストしたいもののために新しいベンチマークを微調整して追加するのは簡単だということです. 「MeasureIt /edit」を実行するだけで、VS がプロジェクトと共に起動するので、これらのベンチマークがどのように記述されているかを確認し、必要に応じて同様の方法で新しいベンチマークを追加できます。

すでに述べたように、StopWatch はおそらくこれを行う最も簡単な方法であり、MeasureIt はそのタイミングのために StopWatch を使用しますが、コードのブロックを X 回実行し、実行の統計を提供するなどの他のことも行います。

于 2008-09-28T18:58:07.153 に答える
4

そこにはかなりの数のプロファイラーがいます。これが私が知っているもののいくつかです:

System.Diagnostics.Stopwatchを使い続けると、コードの特定のポイントのみを計測および測定できるようになります。ここでは、開始/停止を明示的に配置します。これは、タイトループなどの特定の部分を測定するには十分ですが、プログラムがほとんどの時間を費やしている場所の全体像を把握することはできません。

于 2008-09-28T06:04:35.017 に答える
4

簡単な数値が必要な場合は、Powershellを使用して全体的な実行の時間を計ることができます。メジャーコマンドコマンドレットを使用します。Unixの「時間」とほぼ同じです。

> measure-command { your.exe arg1 }

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 4
Milliseconds      : 996
Ticks             : 49963029
TotalDays         : 5.78275798611111E-05
TotalHours        : 0.00138786191666667
TotalMinutes      : 0.083271715
TotalSeconds      : 4.9963029
TotalMilliseconds : 4996.3029
于 2009-09-30T21:59:27.713 に答える
3

これはあなたが望むものではないかもしれませんが、dotTraceは多くの有用な診断を提供し、Visual Studio に統合されています。

于 2008-09-28T03:35:07.810 に答える
1

プロジェクトが非常に大きく、多数の呼び出しを行うモジュールがたくさんある場合は、次のことができます: http://www.moduleanalyzer.com/

于 2010-11-15T18:49:17.963 に答える