Moja aplikacja ładuje pęk klipów audio podczas uruchamiania. Używa ona java.applet.Applet.newAudioClip(URL audioFileURL)
do załadowania plików, które znajdują się w tym samym folderze. Widziałam, że ta funkcja jest zasadniczo otoki uzyskać JavaSoundAudioClip
obiektówDźwięk Java dramatycznie wolniej po aktualizacji JVM 8
Do wczoraj, Skompilowałem JAR z JDK 7 i uruchomił go z JRE wersji 7 uaktualnienia 45. Potem zaktualizowany do wersji 8 Update 31.
teraz ładowanie każdego dźwięku trwa dziesięć razy dłużej niż poprzednio (po 0,2 sekundy każdy, teraz wynosi od 2 do 3 sekund).
To samo zachowanie miało miejsce w różnych konfiguracjach sprzętowych. System operacyjny to 64-bitowy system Windows 7, a środowiska wykonawcze Java 7 i 8 to 32-bitowe.
Kopiąc głębiej w debugowania, stwierdziliśmy, że metody, które spowolniły większości są AudioSystem.getAudioInputStream
, AudioSystem.isLineSupported
, AudioSystem.getLine
Format audio nie powinny być zaangażowane: Próbowałem zarówno OGG i WAV z tych samych wyników.
Ustawienia dla obu JVMs są takie same
EDIT: jeszcze nie mogę odtworzyć problem w niewielki program złożony ad-hoc. Java 8 jest wolniejsza, ale tylko z 10% współczynnikiem. Musi być coś szczególnego w mojej aplikacji i bibliotekach, których używam, które są w konflikcie z systemem audio i/lub jego strumieniami. Będę aktualizował, jak tylko się dowiem.
Czy można porównać wydajność tej metody wywołania między jdk 7 i 8: 'JDK13Services.getProviders (AudioFileReader.class); JDK13Services.getProviders (MixerProvider.class); JDK13Services.getProviders (AudioFileReader.class); ' – gontard
Czy mówimy o Oracle JDK lub o OpenJDK? –
Czy masz przypadek testowy demonstrujący problem? Nie mogłem tego odtworzyć. – apangin