2015-07-02 215 views
-1

我嘗試改進我的程序的性能。我用JMH來比較我的兩個版本,但我不知道是否有真正的差異。JMH:性能比較

我的結果舉例:

   Version1(op/s) score error(op/s)   Version2  score error 

Benchmark 1 12382150,338   1277638,481  18855038,903 50835,395 

Benchmark 2  11708047,2   4061755,193  18843828,659 41966,689 

Benchmark 3  7814465,4   9483927,071  18821356,961 72364,651 

Benchmark 4 10481146,451    464691,58  13936537,089 40726,506 

Benchmark 5 6863734,072   175974,219   9709381,687 21774,816 

這些結果可以顯示1版和第2版之間的真正區別?

+0

我不明白你的問題。基準數據有明顯的差異,第2版顯然在所有基準測試中都更快。你在問什麼,你期望什麼樣的答案? –

+0

是的,但分數給出的置信區間非常大。對於基準3,第一個區間(對於版本1)是[-1669461,671,17298392,471],第二個(對於版本2)是[18748992,310,18893721,612]。它的價值很接近,不是嗎? – lguerin

回答

0

IIRC,基準分數(ops/s)是90%分佈的算術平均值(即極端異常值被濾除)。因此,無論你如何分割,版本2在所有基準測試中得分更高。

0

根據我的經驗,您需要考慮操作的規模來推理它。你是基準測試方法,其長度相當微不足道,並且可能導致結果難以閱讀。 例如,從結果推導基準1:

   Version1     Version2 
Benchmark 1 12382150 +-1277638 ops/s 18855038+-50835 ops/sec 
same as  80+-7 ns/op    53+-1 ns/op 

的報告是很容易使用「-bm avgt -tu NS」,這將設置基準標記模式,以平均時間和時間單位,以納秒來解決。 基準的規模在決定改進的重要性以及對於所討論的基準應該有多懷疑時也很有用。 如果您擔心基準測試中存在差異,則還應確保以充足的迭代次數運行基準測試(-i)和分叉(-f)。您還應該確保在安靜的機器上運行基準測試。還要確保可以在基準測試期間設置CPU頻率,以避免由渦輪增壓,過熱和電源管理調速器造成的變化。