1. 程式人生 > >【基準測試】JMH 簡單入門

【基準測試】JMH 簡單入門

JMH 簡單入門


什麼是 JMH

JMH 是 Java Microbenchmark Harness 的縮寫。中文意思大致是 “JAVA 微基準測試套件”。首先先明白什麼是“基準測試”。百度百科給的定義如下:

基準測試是指通過設計科學的測試方法、測試工具和測試系統,實現對一類測試物件的某項效能指標進行定量的和可對比的測試。

可以簡單的類比成我們電腦常用的魯大師,或者手機常用的跑分軟體安兔兔之類的效能檢測軟體。都是按一定的基準或者在特定條件下去測試某一物件的的效能,比如顯示卡、IO、CPU之類的。

為什麼要使用 JMH

基準測試的特質有如下幾種:

①、可重複性:可進行重複性的測試,這樣做有利於比較每次的測試結果,得到效能結果的長期變化趨勢,為系統調優和上線前的容量規劃做參考。

②、可觀測性:通過全方位的監控(包括測試開始到結束,執行機、伺服器、資料庫),及時瞭解和分析測試過程發生了什麼。

③、可展示性:相關人員可以直觀明瞭的瞭解測試結果(web介面、儀表盤、折線圖樹狀圖等形式)。

④、真實性:測試的結果反映了客戶體驗到的真實的情況(真實準確的業務場景+與生產一致的配置+合理正確的測試方法)。

⑤、可執行性:相關人員可以快速的進行測試驗證修改調優(可定位可分析)。

可見要做一次符合特質的基準測試,是很繁瑣也很困難的。外界因素很容易影響到最終的測試結果。特別對於 JAVA的基準測試。


有些文章會告訴我們 JAVA是 C++編寫的,一般來說 JAVA編寫的程式不太可能比 C++編寫的程式碼執行效率更好。但是JAVA在某些場景的確要比 C++執行的更高效。不要覺得天方夜譚。其實 JVM隨著這些年的發展已經變得很智慧,它會在執行期間不斷的去優化。


這對於我們程式來說是好事,但是對於效能測試就頭疼的。你執行的次數與時間不同可能獲得的結果也不同,很難獲得一個比較穩定的結果。對於這種情況,有一個解決辦法就是大量的重複呼叫,並且在真正測試前還要進行一定的預熱,使結果儘可能的準確。

除了這些,對於結果我們還需要一個很好的展示,可以讓我們通過這些展示結果判斷效能的好壞。

而這些JMH都有!