我有一個用Java編寫的解釋器。我試圖在解釋器中測試各種優化的性能結果。要做到這一點,我解析代碼,然後重複運行代碼翻譯,直到我得到5個運行,它們有一個很小的差距(在下面的時間0.1s),平均值被採取並打印。口譯員不會出現I/O或隨機性。如果我再次運行解釋我得到不同的行進時間:Java性能不一致
91.8s
95.7s
93.8s
97.6s
94.6s
94.6s
107.4s
我試圖無濟於事服務器和客戶端虛擬機中,串行和並行GC,大表和Windows和Linux。這些是在1.6.0_14 JVM上。計算機沒有進程在後臺運行。所以我問什麼可能會導致這些大的變化,或者我怎麼能找出什麼是?
實際的問題是由於程序必須迭代到固定點解決方案並將值存儲在哈希集中導致的。散列值在運行之間不同,導致不同的排序,從而導致達到解決方案所需的迭代次數發生變化。
堆設置爲-Xms1024M -Xmx1024M。 – Molehill 2009-06-23 18:30:55
你試過了什麼? – akf 2009-06-23 18:32:47