Frage

Ich habe mich gefragt, über die Leistungsverbesserungen angekündigt in Java SE 6 - ist es im Compiler oder die Laufzeit? Anders ausgedrückt, würde eine Java 5 Anwendung von JDK kompiliert 6 eine Verbesserung Lauf unter JSE 5 (was eine verbesserte Compiler-Optimierung) sehen? Würde eine Java 5 Anwendung von JDK kompiliert 5 eine Verbesserung Lauf unter JSE 6 (was eine verbesserte Laufzeitoptimierung) sehen?

Ich habe bemerkt, dass unter JDK 6 Kompilieren so lange fast doppelt nimmt, wie es unter JDK 5 für die exakt gleiche Code-Basis hat; Ich hoffe, dass zumindest ein Teil dieser zusätzlichen Zeit wird auf Compiler-Optimierungen ausgegeben werden, hoffentlich zu mehr performant JARs und WARs führt. Suns JDK Info nicht wirklich ins Detail gehen zu den Leistungsverbesserungen sie gemacht haben - ich nehme an, es ist ein wenig aus der Spalte A, und ein wenig aus der Spalte B, aber ich frage mich, was der größere Einfluss ist. Kennt jemand von irgendwelchen auf JDK 6 vs. JDK getan Benchmarks 5?

War es hilfreich?

Lösung

Ich habe nicht über Verbesserungen im Compiler gehört, aber umfangreiche Informationen haben sich auf der Laufzeit-Performance Verbesserungen veröffentlicht.

Migration Guide:

[ http://java.sun.com/javase /6/webnotes/adoption/adoptionguide.html]

Performance White Paper:

[ http://java.sun.com/performance/reference /whitepapers/6_performance.html]

Andere Tipps

javac, die von Java-Quellcode zu Bytecode kompiliert, macht fast keine Optimierung. Tatsächlich würde Optimierung oft tatsächlich macht Code langsamer läuft durch härter sein für die spätere Optimierung zu analysieren.

Der einzige wesentliche Unterschied zwischen generierten Code für 1.5 und 1.6 ist, dass mit -target 1.6 zusätzlichen Informationen über den Zustand des Stapels hinzugefügt werden Verifikation einfacher und schneller (Java ME tut dies auch) zu machen. Dies betrifft nur Klasse Ladegeschwindigkeiten.

Die eigentliche Optimierung Teil ist der Hotspot-Compiler, der Bytecode nativen Code zu kompilieren. Dies wird auch auf einigen Update-Versionen aktualisiert. Unter Windows nur die langsame Client C1 Version von Hotspot ist in der JRE standardmäßig verteilt. Der Server C2 Hotspot laufen schneller (verwenden -Server auf der Java-Befehlszeile), ist aber langsamer zu starten und mehr Speicher.

Auch die Bibliotheken und Werkzeuge (einschließlich javac) manchmal Optimierungsarbeit geleistet haben.

Ich weiß nicht, warum Sie JDK finden 6 langsamen Code als JDK zu kompilieren 5. Gibt es einen feinen Unterschied in einzurichten?

Es ist fast 100% der Laufzeit. Während es möglich ist, einige grundlegende Zusammenstellung Tricks es in den Java-Compiler selbst zu machen, ich glaube nicht, dass es irgendwelche signifikante Verbesserungen zwischen Java 1.5 und 1.6.

Es ist schon in der neuen Java Virtual Machine viele neue Verbesserungen und Optimierungen. So ist der Hauptteil Sie verbesserte Leistung sehen werden wird, während Java mit der Version 6 Jvm ausgeführt wird.

Kompilieren alten Java-Code der Java 6 JDK wird wahrscheinlich effizienten Code ergeben, aber die wichtigsten Verbesserungen liegen in der virtuellen Maschine, zumindest das ist, was ich bemerkt habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top