2016-07-27 51 views
1

我目前正在做一些Java優化。看來評估我的進展的最好方法是使用System.nanoTime重複運行並收集運行時統計信息。Java優化範式

我的背景大部分都是嵌入式DSP應用。在我的嵌入式開發中,我可以訪問CPU週期計數器(這是優化的很好措施)。 JRE的行爲就像一個合成的CPU,有沒有辦法獲得執行的指令數量或JRE時鐘等值的信息?

在此先感謝您的任何提示。 J.R.

+2

請參閱http://stackoverflow.com/q/504103/3788176 –

回答

2

字節碼計數對於你想要的幾乎肯定是無用的。它們在運行時的性能方面完全是虛擬/名義上的。唯一重要的事情就是已經熱身的代碼已經過去了。

我建議你看看JMH爲你的代碼進行微觀基準測試。 http://openjdk.java.net/projects/code-tools/jmh/

如果您來自DSP /實時背景,我建議您查看延遲分佈並儘量減少分配率。

注:JVM在指令之間注入「安全點」以檢查線程是否需要停止執行垃圾收集。垃圾收集可能需要幾秒鐘。然而,安全點通常會進行優化以避免放慢程序運行速度。

總之,這意味着時間之間的指令可能是什麼,它可能是,它可能是秒鐘甚至幾分鐘,所以我不會打擾他們的計數。