Frage

Wenn ich auf die Erzeugung von Debug-Informationen wechseln mit Javac dann die Klassendateien sind 20-25% größer. Haben diese keine Performance-Auswirkungen auf das Java-Programm ausgeführt wird? Wenn ja auf welchen Bedingungen und wie viele. Ich erwarte einen geringen Einfluss auf die Klassen geladen, weil die Dateien, die größer sind, aber dies sollte minimal sein.

War es hilfreich?

Lösung

In jeder Sprache, Debug-Informationen sind Meta-Informationen. Es wird von seiner Natur erhöht die Größe der Objektdateien, so dass die Ladezeit zu erhöhen. Während der Ausführung außerhalb eines Debuggers, wird diese Information tatsächlich vollständig ignoriert. Wie skizziert (wenn auch nicht eindeutig) in der JVM-Spezifikation die Debug-Informationen außerhalb des Bytecode-Strom gespeichert. Dies bedeutet, dass bei der Ausführung kein Unterschied in der Klassendatei ist. Wenn Sie jedoch sicher sein wollen, probieren Sie es aus: -).

Ps. Oft für die Fehlersuche ist es Wert in der Optimierung ausschalten. Das hat haben eine Auswirkung auf die Leistung.

Andere Tipps

Ausschalten Debugging allein sollte keinen Unterschied überhaupt machen. Aber sobald Sie das Debuggen auszuschalten und auf Optimierung, sollten Sie einen Unterschied sehen, da dies einige statischen Optimierungen bei der Kompilierung macht. Auf diese Weise sogar Ihre Hot-Spot-Code optimiert wird schneller zur Laufzeit.

Aber so weit, der Kompromiss zwischen Bedeutung bekommt volle Stack-Spuren oder eine nutzerLeistung, ich habe immer für die Stack-Spuren. Schließlich sind Anwender jedes Jahr 1000 $ ausgeben, bereit, eine schnellere Maschine zu bekommen, aber nicht bereit sind, 15 Minuten verbringen Sie aussagekräftige Fehlermeldungen zu Ihnen zu geben, ihre Probleme zu lösen.

Nach den Jahren, ich bin eher bereit, meine 15 Minuten höheren Wert als der $ 1000 des Benutzers. :)

Bitte beachten Sie, dass seit JDK1.3 Javac all Optimierungs-Flags ignoriert „Compiler-Optimierung ist nicht notwendig“

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