2016-02-27 17 views
4

我有許多需要高性能代碼路徑的基準。我的Jmh微型基準測試的熱身迭代比我在生產中編寫的熱身代碼更有效。我的問題是,我可以導出基準測試並通過Java API調用它們,以便在實際應用程序中預熱代碼路徑。或者是否有一些魔術會使這種效果變得無效。我可以使用已寫入的Jmh微基準預熱產品代碼

回答

1

我不會推薦你這樣做。首先,沒有給出您可以提供基準所需的所有基礎架構。例如,不可能提供某些對象,如Blackhole,因爲該類不能從基準以外實例化。其次,並不能保證虛擬機的熱身效果如你所願:真實的代碼可能會顯示稍微不同的行爲,這樣你的基準測試就會污染你的個人資料,而不是爲虛擬機真實世界準備好。

爲了預熱虛擬機,從外部提供類似真實交互的交互幾乎總是更好。教授一個程序自我熱身對代碼變化非常脆弱,幾乎從不是一個好主意。

0

我認爲通過帶有0個分支的API啓動基準將在啓動虛擬機中運行基準測試。如果他們構成了良好的熱身,那麼你可能會得到你以後的效果。

相關問題