Meine Anwendung lädt eine Reihe von Audioclips beim Start. Es verwendet java.applet.Applet.newAudioClip(URL audioFileURL)
, um die Dateien zu laden, die sich im selben Ordner befinden. Ich konnte sehen, dass diese Funktion im Grunde ein Wrapper JavaSoundAudioClip
ObjekteJava Sound dramatisch langsamer nach JVM 8 Update
Bis gestern zu bekommen, ist, ich die JAR mit JDK 7 zusammengestellt und startete es mit JRE-Version 7 Update 45. Dann habe ich 31
nun auf Version 8 Update aktualisiert Das Laden jedes Audios dauert zehn Mal länger als zuvor (war jeweils 0,2 Sekunden, jetzt liegt es zwischen 2 und 3 Sekunden).
Das gleiche Verhalten ist bei verschiedenen Hardwarekonfigurationen aufgetreten. OS ist 64bit Windows 7, sowohl Java 7 als auch 8 Laufzeitumgebungen sind 32bit.
tiefer in das Debuggen Graben, fand ich, dass die Methoden, die am meisten verlangsamt sind AudioSystem.getAudioInputStream
, AudioSystem.isLineSupported
, AudioSystem.getLine
Audioformat nicht einbezogen werden sollten: Ich habe versucht, sowohl OGG und WAV mit den gleichen Ergebnissen.
Die Einstellungen für beide JVMs sind die gleichen
EDIT: Auch ich konnte das Problem in einem kleinen Programm aus Ad-hoc nicht reproduzieren. Java 8 ist in der Tat langsamer, aber nur mit einem Faktor von 10%. Es muss etwas speziell mit meiner Anwendung geben und die Bibliotheken, die ich verwende, die mit Audiosystem und/oder seinen Strömen in Konflikt stehen. Ich werde aktualisieren, sobald ich es herausfinden werde.
Konnte man die Leistung dieser Methodenaufrufe zwischen den jdk 7 und 8 vergleichen: 'JDK13Services.getProviders (AudioFileReader.class); JDK13Services.getProviders (MixerProvider.class); JDK13Services.getProviders (AudioFileReader.class); ' – gontard
Sprechen wir Oracle JDK oder für die OpenJDK? –
Haben Sie einen Testfall, der das Problem zeigt? Ich konnte es nicht reproduzieren. – apangin