Jedyny znany mi sposób to flaga -Xcomp
, ale generalnie nie jest to wskazane. Wymusza natychmiastową kompilację JIT WSZYSTKICH klas i metod przy pierwszym uruchomieniu. Minusem jest spadek wydajności przy pierwszym uruchomieniu (z powodu zwiększonej aktywności JIT). Innym ważnym ograniczeniem związanym z tą flagą jest wyłączenie przyrostowej optymalizacji opartej na profilowaniu, którą normalnie JIT wykonywał. W standardowym trybie mieszanym kompilator JIT może (i będzie) dekompilować i ponownie kompilować części kodu w sposób ciągły w oparciu o zebrane informacje profilowania i wykonywania. Dzięki temu może "poprawić" błędne optymalizacje, takie jak kontrole graniczne, które zostały pominięte, ale okazały się być potrzebne, suboptymalne inlinings itp. -Xcomp
wyłącza optymalizację opartą na profilowaniu iw zależności od programu, może spowodować znaczące straty wydajności ogólnie tylko dla małych lub brak prawdziwego zysku podczas uruchamiania, dlatego nie zaleca się go używać.
Beyond -Xcomp
(co jest dość brutalny) i -XX:CompileThreshold
(który kontroluje ile egzekucje danej metody JIT będzie działać w trybie intepreted do zebrania statystyk przed kompilacją/optymalizując go), istnieje również -Xbatch
. Zmusza to kompilację JIT do "pierwszego planu", zasadniczo blokując wywołania metod, dopóki nie zostanie skompilowana, zamiast kompilować je w tle, tak jak zwykle.
Nie określono, która wersja Java jest używana, ale jeśli Java 7 jest opcją dla ciebie, wprowadza nowy model JIT o nazwie "Tiered Compilation" (aktywowany przełącznikiem -XX:+TieredCompilation
). Jaka jest wielopoziomowa kompilacja, umożliwia początkową, mniejszą przepustowość kompilacji przy pierwszym użyciu metody, a następnie dodatkową, większą kompilację/optymalizację później, w oparciu o zebrane dane profilowania. Wygląda na to, że powinno być dla ciebie interesujące.
Podobno wymaga dodatkowych ulepszeń i parametrów/konfiguracji, ale nie mam już okazji, by to sprawdzić dalej.
czy można uruchomić realistyczną, syntetyczną rozgrzewkę tej metody, czy robi to, czego nie można sfałszować? – Matt
Ta metoda jest używana do analizowania dużych plików konfiguracyjnych zaraz po uruchomieniu i właśnie to chcę przyspieszyć. Sztuczna rozgrzewka prawdopodobnie by w tym momencie nie pomogła ... –
Czy mógłbyś uprościć swoją konfigurację? zmienić go z xml na prostszy format właściwości lub cokolwiek, aby zmniejszyć ilość kodu potrzebnego do odczytu? może podzielisz konfigurację na część "rozruchową", tak małą jak to tylko możliwe, aby uruchomić i główną część, którą możesz załadować w tle? może zrównoważyć pracę, więc nawet jeśli kod zostanie zinterpretowany, możesz zyskać na szybkości od owijania go? – radai