我有其中我使用System.Diagonstics時間算法 - 經由秒錶。時序一組方法 - 它們運行在第二時間,它們更快
它工作的很好,但我注意到的一件事是,我第一次運行該算法需要大約52毫秒,這是偉大的。
第二次運行算法時,只需要幾分之一的時間。
這是由於性質.NET?
每次我用一組新數據運行該算法時,我都會重新初始化它。換句話說,我創建了一個新的對象,而不是重新使用舊的引用,所以我不知道爲什麼這仍然會發生。通常我不會在意這樣的事情,但是爲了完成這項任務,我必須測量算法的效率和速度,因此瞭解這種情況發生的原因對我來說很重要。的我如何使用定時器
僞代碼如下:
Algorithm class
Stopwatch get/set
Method A
Start stopwatch
// Do work.
Stop stopwatch
End
Method B
Start stopwatch
// Do work.
Stop stopwatch
End
End
後這兩種方法都在叫我的亞軍,我得到了秒錶和檢查的時間。
該算法
該算法是用於計算機控制的A.I opponnents戰術航路點推理。在上面的例子中,我試圖儘可能地簡化它。
結果
19.7847
0.0443
0.0102
0.0159
0.0091
0.0073
0.0079
0.0079
0.0079
0.0079
0.0079
0.0079
0.0136
0.0079
0.0073
0.0079
0.0079
0.0079
0.0079
0.0073
...
我應該忽略第一次算法運行?否則,我將得到與第一次運行時的值基本相同的平均值。
你能給出你的alghoritm的抽象概念嗎? – 2009-12-04 11:11:12
我認爲這將是涉及JIT的東西,但我不確定。所以你會說爲了有一個公平的測試,我應該忽略它的第一次跑步,並採取以下嘗試的時機? – Finglas 2009-12-04 11:12:27
這出色的職位上SO:HTTP://計算器。com-questions/1507405/c-is-this-benchmarking-class-accurate涵蓋了許多可用於提高計時準確性的技巧:包括「預熱Jit'r」,「呼叫GC」和「等待對於待定終結者「 – BillW 2009-12-04 15:49:46