2013-05-17 168 views
3

我創建了一個控制檯應用程序,我試圖從SQL數據庫(=在同一臺服務器上)獲取值的2種不同的方法。當我添加一個秒錶來檢查哪一個是最快的方法時,我有時會得到第一個,其他時間是第二個。有什麼可以對此負責?是否可以在相同條件下運行測試?我應該運行這個異步?測試性能

我的控制檯代碼可以在這裏找到:http://pastie.org/7920175

+2

首先,結果是如果沒有下一個發佈版本毫無意義。其次,如果有時候是第一次,有時候第二次,我會趕緊猜測他們所花的時間非常相似。 –

+0

我們需要方法本身的源代碼。 但是,爲什麼你需要優化代碼?它太慢了嗎?然後一個線程會更好。 @ Moo-Juice:我完全同意。 – jAC

+0

數據庫服務器本身(緩存,參數嗅探等)可能會影響性能而不是客戶端執行SQL的可能性有多少或多個因素;當然這要看是什麼的基準方法,真正做到 - 這還沒有陳述和時間差 - 這還沒有陳述 –

回答

1

StopWatch可能不會像你一樣準確。

你可以使用Visual Studio 2012的性能分析是非常方便(如果你使用vs2012),否則你可能會想安裝一個Profiler工具,如YourKit

你說的兩種方法從數據SQL數據庫。這意味着您不僅僅測量您編寫的代碼,還測量可能表現不同的第三方操作(例如從數據庫讀取)。這可能是這兩種方法從一個運行到另一個

1

我認爲你可以使用this很好的工具來檢查你的方法表現返回不同時間的原因之一。

SpeedTester myTest = new SpeedTester([method to test]); 
myTest.RunTest(); 
0

多久的方法,你正在測試叫什麼名字?每運行一千次,看看哪一個更快。

而且,如果所有方法都做的是結束了一些SQL,你可能看不到太大的差別的同一數據的第一次查詢後反正。每次嘗試之前你可能會考慮clearing the query cache