Heim >Java >javaLernprogramm >Wie stark wirkt sich Reflexion auf die Java-Leistung aus?

Wie stark wirkt sich Reflexion auf die Java-Leistung aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-05 04:19:14427Durchsuche

How Much Does Reflection Impact Java Performance?

Beeinflusst Reflektion die Java-Leistung?

Das Erstellen von Objekten mithilfe von Reflektion, anstatt den Klassenkonstruktor direkt aufzurufen, führt zweifellos zu erheblichen Leistungseinbußen. Reflexionsvorgänge erfordern eine dynamische Typauflösung, was die Optimierung von Java Virtual Machines behindert.

In der Java-Dokumentation zur Reflexion wird dieser Leistungsunterschied anerkannt: „Da bei der Reflexion Typen beteiligt sind, die dynamisch aufgelöst werden, können bestimmte Optimierungen von Java Virtual Machines nicht durchgeführt werden ... reflektiv.“ Operationen haben eine langsamere Leistung als ihre nicht reflektierenden Gegenstücke Unterschied:

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);
    }
}
Ergebnisse:

Ohne Reflexion: 35ms
  • Mit Reflexion: 465ms
  • Beachten Sie, dass dieser Test sowohl die Suche als auch die Instanziierung umfasst, aber selbst die Isolierung der Instanziierung führt zu einem Strafe:

Ohne Reflexion: 30 ms
  • Mit Reflexion (eine Suche, nur Instanziierung): 47 ms
  • Daher kann der Leistungseinbruch je nach variieren Im konkreten Kontext bleibt es bei der Verwendung von Reflexion von Bedeutung.

Das obige ist der detaillierte Inhalt vonWie stark wirkt sich Reflexion auf die Java-Leistung aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn