我一直在擺弄一些排序算法,並計時看它們是多麼有效。爲此,我創建了一個靜態類,其中包含許多用於整數的排序算法,另一類用於對它們進行計時並將數據導出到csv。JVM中這些計時問題的原因是什麼?
我已經開始查看上述數據,並且我注意到了一個有趣的趨勢。我的程序創建了5個不同的隨機數組進行測試,每個排序算法對每個數組進行10次不同試驗的平均值。奇怪的是,第一個數組似乎有一些算法的平均時間顯着更長,但其他算法則沒有。這裏有一些示例數據來備份它: Dataset 1,Dataset 2和Dataset 3(時間以納秒爲單位)。
我不確定它是否與某些算法,我實現算法,JVM或其他因素組合有關。有人知道這種數據是如何發生的嗎?
此外,所有的源代碼可用here。在'src'文件夾下查找。
結果** [統計顯着性](http://en.wikipedia.org/wiki/Statistical_significance)**?你有多少次運行你的實驗?您是否使用[統計假設檢驗](http://en.wikipedia.org/wiki/Statistical_hypothesis_testing)提取[P-Value](http://en.wikipedia.org/wiki/P-value)? – amit
熱身時間在JVM中很常見;在試圖計算時間之前,大多數基準測試都會運行代碼很長一段時間,直到性能穩定。這給了JVM加載所有類,配置文件,編譯熱點等的機會。我不知道爲什麼某些測試的熱身不同於其他測試,但是您可能想要嘗試更改排序的順序並看看這是否有所作爲。 – rici
@rici我想知道旁邊的熱點有什麼可以在這裏產生效果。整個源代碼都在一個類中。 –