2015-06-21 42 views
1

我正在爲我的一些代碼編寫性能基準測試。這是爲了比較我自己的實現,因爲我開發/實驗,並與「競爭」實現進行比較。我沒有問題寫這些,並獲得可用的結果。性能基準的推薦樣本?

很好的證據表明,更多的樣品是一件好事,因爲它減少了錯誤數據的影響並給出了更真實的結果。因此,如果我正在分析一個給定的函數/程序/不管,有多少樣本似乎合理得到?

我目前正在爲每個測試做約100萬個樣本。這些都是單獨的操作,即使在舊筆記本電腦上,結果也很少超過每件10秒。大部分時間都在百分之一秒以內。

回答

0

實際上,更多的樣品是一件好事還不是很清楚。 這只不過是普通的智慧。

我認爲您在分析原因時普遍感到困惑,無論目的是衡量性能還是發現加速。

爲了測量性能,您根本不需要樣品。 你需要的是一個秒錶,無論是否在軟件中。 如果你的程序運行得太快而無法解決秒錶的問題,只需運行你的程序10^3或10^6次,測量它,然後除以該數字。

爲了找到加速,對採樣調用堆棧進行採樣非常有效,前提是採樣包含行級別或指令級別的調用位置信息。 你需要多少個樣品?那麼,如果你看到它做了一件可以在一個樣本上刪除的東西,那可能沒有多大意義。 但是,如果您在兩個樣本上看到它,則估計它的成本計算時間分數F約爲2/N,其中N是樣本數。 例如:如果您在10個樣本中看到它兩次,則意味着它花費大約20%的時間。 一般來說,如果加速時間將節省您的F小時,平均需要2/F樣本才能看到它兩次。例如:如果要節省30%的時間(F = 0.3),則平均需要2/0.3 = 6.67個樣本才能看到它兩次。 當然,如果你看到它兩次以上,那就更好了。

底線,爲了找到加速,你不需要很多樣品。 你需要的是檢查每一個可以刪除的活動。 你不需要的是將它們拼湊成「統計數據」(與大多數分析器一樣)。 Many people understand this.

如果你想要更嚴格的解釋,look here

+0

就執行時間而言,每個樣本都是來自代碼內秒錶的定時。對不起,如果我似乎並非如此。 感謝您的澄清。看來我主要是以統計學家的身份出現在這裏。我並不知道特定領域的細微差別。 –