反射會影響 Java 效能嗎?
使用反射來建立對象,而不是直接呼叫類別建構函數,無疑會帶來嚴重的效能損失。反射操作需要動態類型解析,這阻礙了 Java 虛擬機器最佳化。
Java 關於反射的文檔承認了這種效能差異:「因為反射涉及動態解析的類型,所以無法執行某些 Java虛擬機器最佳化...反射操作的效能比非反射操作的效能慢。
結果:public class Main { public static void main(String[] args) throws Exception { doRegular(); doReflection(); } public static void doRegular() throws Exception { long start = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { A a = new A(); a.doSomething(); } System.out.println(System.currentTimeMillis() - start); } public static void doReflection() throws Exception { long start = System.currentTimeMillis(); for (int i = 0; i < 1000000; i++) { A a = (A) Class.forName("misc.A").newInstance(); a.doSomething(); } System.out.println(System.currentTimeMillis() - start); } }
無反射:35ms
以上是反射對 Java 效能有多大影響?的詳細內容。更多資訊請關注PHP中文網其他相關文章!