我想知道是否有任何額外的優化,我可以實現,以提高Java反射調用的速度。並不是說性能過高,但是當我想到我正在編寫的庫中的某段代碼正在某個地方以緊密的循環實現時,我會得到意志。如何進一步優化Java反射方法調用?
考慮一個實用的方法來反思調用:
public static Object invoke(Object targetObject, String methodName, Object[] arguments, Class<?>[] signature)
的基本操作是
return method.invoke(targetObject, arguments);
作爲一個性能優化,我緩存使用目標對象的類,方法名的散列方法和簽名(其中的代碼可能會使用一些改進),但除此之外,還有什麼我可以做的嗎?我聽說過一些InvokeDynamic的早期實現,但我只是假設它們可能還不適用,並且我打折了自己的字節碼操作,因爲我希望保持實用程序簡單(但速度很快)。
乾杯。
哇我從來不知道這一點。我會做這些時間測試。 有什麼方法可以覆蓋15個默認值? 任何其他方式說服編譯器提前踢? – Nicholas 2009-01-05 23:22:16
只需將sun.reflect.inflationThreshold屬性設置爲您希望的數字即可。 – 2009-01-06 11:27:50