2010-12-13 57 views
7

我不知道標題是否有意義,但我想要做的是定時兩種不同的方法,看看它們每秒執行多少次,或者說每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秒之間),然後將迭代次數除以獲得每秒執行吞吐量。

+5

並且使用一個發佈版本並且在啓動程序時沒有附加調試器。在啓動基準測試之前,最好運行所有的代碼,以便像JITing這樣的啓動效果不被測量。 – CodesInChaos 2010-12-13 22:19:05

+1

不要忘記注意參考地點。劃分相同的確切多邊形可能需要更長的時間,如果它們並不總是在同一時間創建的話。 – 2010-12-13 22:24:51

+0

@CodeInChaos,我如何確保沒有附加調試器?使用發佈版本會自動執行此操作嗎? – 2010-12-13 23:38:23

2

我會怎麼做:

  • 啓動Stopwatch
  • 在這些函數中,我增加了一個簡單的變量(long,float或double,取決於你認爲他們會被調用的頻率),所以每次調用都會增加它。
  • 調用第一個函數。
  • 停止Stopwatch並檢查TotalSeconds對我正在增加的變量。
  • 重複第二個功能。
1

Visual Studio 2010有一個分析器,它可以確定每個時間單元的方法調用的確切數量。

+0

謝謝,它是在專業版嗎? (不是最終版本) – 2010-12-13 23:36:49

+1

Profiler可用於Premium和Ultimate版本,但不支持Pro。請參閱「調試和診斷」下的http://www.microsoft.com/visualstudio/en-us/products。 – 2010-12-13 23:42:58