Wpis z mikrobloga

#java #jetbrains #nieprogramowanie

No elo, z racji że dużo osób narzeka na wydajność IDE od JetBrains na Windowsie, postanowiłem machnąć ten wpis i pokrótce wyjaśnić jak przyspieszyć nasze IDE. Druga część porad działa też na Linuxie i OSX.
Sposób działa praktycznie na każdym IDE od jetbrains:

Intellij IDEA

PyCharm

CLion

PHPStorm

WebStorm

RubyMine

i inne.

Ponadto parametry JVM z pkt 2 mogą być użyte także w Eclipse czy Netbeans więc warto się tym zainteresować.

Jedziemy.

1. Właściwy exe.

Pierwszym problemem środowisk JetBrains uruchiamianych na Windowsie jest fakt że domyślnie odpalają się z 32 bitowego pliku .exe, nawet jeżeli mamy system x64.
Samo uruchomienie z pliku 64.exe powoduje znaczny wzrost wydajności. Oto co robimy:
Mamy skrót do naszego IDE, w moim przypadku jest to IntelliJ

"D:\Program Files (x86)\JetBrains\IntelliJ IDEA 15.0\bin\idea.exe"

zamieniamy na

"D:\Program Files (x86)\JetBrains\IntelliJ IDEA 15.0\bin\idea64.exe"

Od tej pory przez ten skrót będziemy uruchamiać środowisko w wersji 64 bitowej.

.
2. Optymalizacja parametrów maszyny wirtualnej IDE
Ustawienia JVM znajdują się w pliku
.exe.vmoptions dla exe 32bit lub w 64.exe.vmoptions dla exe 64bit.
Oczywiście pewnie wiecie że jeżeli od tej pory, zgodnie z pkt 1 uruchamiacie IDE 64bit, zmieniać parametry JVM należy w tym drugim pliku.

Ten punkt ma zastosowanie dla każdego systemu operacyjnego, niezależnie czy OS X, WIndows czy Linux.
Jedyna różnica jest taka że plik .vmoptions może się nazywać nieco inaczej, np bez "exe" w nazwie w przypadku OSX/Linuxa

64.vmoptions


Dobra, otwieramy idea64.exe.vmoptions powinno być tam coś takiego:

-Xms128m

-Xmx512m

-XX:MaxPermSize=250m

-XX:ReservedCodeCacheSize=240m

-XX:+UseConcMarkSweepGC

-XX:SoftRefLRUPolicyMSPerMB=50

-ea

-Dsun.io.useCanonCaches=false

-Djava.net.preferIPv4Stack=true


Dla ultra leniwych tu mam gotowe ustawienia do wklejenia ale polecam przejrzeć to co jest poniżej.

Na początku dokładamy parametr

-server


IDE będzie uruchamiać się nieco dłużej ale będzie bardziej responsywne.
Najważniejszymi parametrami które nas na razie interesują to Xms i Xmx
Xms - ilość pamięci alokowanej początkowo
Xmx - maksymalna ilość pamięci która IDE może zaalokować

128mb i 512mb max to bardzo mało, należy to zmienić. W zależności od projektu może być potrzeba ustawienia Xmx na nawet kilkanaście GB. W większości przypadków wystarczy jednak 1,5 GB.
Wydajnościowo opłaca się ustawić Xms i Xmx na te same wartośći, zatem zamieniamy nasze parametry na:

-Xms1500m

-Xmx1500m


3. Na tym etapie IDE już powinno być sporo szybsze. Oto dodatkowe opcje optymalizacyjne, polecam zastosować.

-XX:MaxPermSize=350m

MaxPermSize nie jest używany w JVM 8, jeżeli wasze IDE używa JVM7 i niższych, warto zwiększyć tą wartość.
IntellJ Idea 15 działa domyślnie na JVM 8.

-XX:+CMSParallelRemarkEnabled

Pozwala GC używać wielu wątków w fazie remark. Powoduje to mniej pauz i mniejsze opoźnienia.

-XX:ConcGCThreads=4

Tutaj ustawiamy liczbę wątków z jakiej korzysta GC, z tego co wiem, do IDE 4 wątki są najbardziej optymalne. Użycie większej liczby wątków może pogorszyć wydajność ponieważ dochodzi do tego więcej synchronizacji.

-XX:+UseCompressedOops

Powoduje to używanie skompresowanych referencji, daje to dodatkową wydajność na JVM 64bit. Stosować jeżeli nasz stos (Xmx) jest mniejszy niż 32GB.

-XX:+TieredCompilation

Optymalizacja kompilatora, o tym jak działa więcej tu.

#intellij #pycharm #phpstorm i inne IDE od Jetbrains.
  • 16
używam eclipsa w sumie od dawna i kiedyś strasznie mulił ale nie tylko on bo jak ma nie mulic jak masz 10 tysięcy małych pliczków na dysku a on musi każdy przejrzeć, a że zwykły hd to to max 100 io/ps to musi trwać ale jak przesiadłem się na SSD to masakra poprostu wzrost wydajności wprost proporcjonalny do io/ps w SSD takżę polecam SSD
@zranoI: Prawda w oczy kole, co? :P Kij Cię chyba za mocno uwiera :P
Ja się przymierzałem do Jetbrainsów przy dwóch projektach, ale choć mych najszczerszych chęci nie podołałem. Już w sumie zapomniałem nawet, że jest coś takiego.
Czasem znajomy, który koduje w javie mi przypomni, wzdycha wspominając czasy pisania w visual studio ;) Potem wraca do swojego "IDE" z płaczem lekkim..