2010-12-13 14 views
7

タイトルが意味をなさないかどうかわかりませんが、私がしようとしているのは、2つの異なる方法の時間を計測し、1秒間に何回実行するか、10秒ごとに何回言うかを確認することです。例えばC#メソッドを毎秒プロファイルする方法は?

DividePolygons1(Polygon[] polys) 
DividePolygons2(Polygon[] polys) 

DividePolygons1 ran: 
1642 times per 1 second 

DividePolygons2 ran: 
1890 times per 1 second 

答えて

10

System.Diagnostics.Stopwatchクラスは、ここであなたを助けるが、オプティマイザは、あなたが測定しようとしているロジックを排除しないように何とか結果を使用するように注意してくださいます。

それ以外にも、ループで数百万回プロファイリングしているコードを実行するだけです(反復回数を調整して1〜30秒になるように調整します)。その後、反復回数を1秒あたりの実行でのスループット。

+5

リリースビルドを使用し、プログラムの起動時にデバッガをアタッチしないでください。ベンチマークを開始する前に一度コードを実行すると、JITingなどの起動効果が測定されないようになります。 – CodesInChaos

+1

参照の地域性に注意することを忘れないでください。同じ正確なポリゴンが常に同時に作成されるとは限りません。 –

+0

@ CodeInChaos、どのようにデバッガが接続されていないことを確認しますか?リリースビルドを使用すると自動的にこれが行われますか? –

2

私はどうなるのか:

    Stopwatchを起動し
  • これらの関数では、コールごとにインクリメントされるように、単純な変数(long、float、double)をインクリメントします。
  • 最初の関数を呼び出します。
  • Stopwatchを停止し、インクリメント中の変数に対してTotalSecondsをチェックしてください。
  • 2番目の機能を繰り返します。
1

Visual Studio 2010には、時間単位ごとのメソッド呼び出しの正確な数を特定できるプロファイラがあります。

+0

ありがとう、プロバージョンですか? (究極のものではない) –

+1

プロファイラは、PremiumおよびUltimateエディションで利用できますが、Proでは使用できません。 「デバッグと診断」のhttp://www.microsoft.com/visualstudio/en-us/productsを参照してください。 –

関連する問題