Heim >Java >javaLernprogramm >Wie stark wirkt sich Reflexion auf die Java-Leistung aus?
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
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!