首頁 > Java > java教程 > 反射對 Java 效能有多大影響?

反射對 Java 效能有多大影響?

Patricia Arquette
發布: 2024-12-05 04:19:14
原創
485 人瀏覽過

How Much Does Reflection Impact Java Performance?

反射會影響 Java 效能嗎?

使用反射來建立對象,而不是直接呼叫類別建構函數,無疑會帶來嚴重的效能損失。反射操作需要動態類型解析,這阻礙了 Java 虛擬機器最佳化。

Java 關於反射的文檔承認了這種效能差異:「因為反射涉及動態解析的類型,所以無法執行某些 Java虛擬機器最佳化...反射操作的效能比非反射操作的效能慢。

結果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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

    有反射:465ms
  • 請注意,此測試包括查找和實例化,但甚至包括隔離實例化會導致懲罰:

無反射:30ms
  • 有反射(一次查找,僅實例化):47ms
  • 因此,雖然性能命中率可能會根據具體上下文而有所不同,但在使用反射時仍然很重要。

以上是反射對 Java 效能有多大影響?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板