大家都知道可以使用Reflection
獲取方法,並通過返回的Method
實例調用它。由Reflection獲取的方法的執行是否需要更長的時間?
然而我的問題是;一旦它被Reflection
提取並且我反覆調用Method
,那麼該方法的性能會比調用方法的正常方式慢嗎?
例如:
import java.lang.reflect.Method;
public class ReflectionTest {
private static Method test;
public ReflectionTest() throws Exception {
test = this.getClass().getMethod("testMethod", null);
}
public void testMethod() {
//execute code here
}
public static void main(String[] args) throws Exception {
ReflectionTest rt = new ReflectionTest();
for (int i = 0; i < 1000; i++) {
rt.test.invoke(null, null);
}
for (int i = 0; i < 1000; i++) {
rt.testMethod();
}
}
}
我問這個,因爲我在做一個事件系統,該系統在註冊監聽器,它會掃描註解。將這些方法放入一張圖中,然後在每次發生其所需參數類型的事件時執行這些方法。我不知道這是否足夠高性能,例如遊戲。
也許不在執行中,也許在抓取? – DnR
我相信如果我注意提取的數量,我不應該對性能有太大的影響嗎? – Limnic
讓我們等待親的答案:D – DnR