Czy powinienem używać opcji javac -O do optymalizacji?
javac
ma ciekawe-O
opcja:
Optymalizuje skompilowany kod, wstawiając metody statyczne, końcowe i prywatne. Pamiętaj, że twoje klasy mogą być większe.
Ta opcja wydaje się nie być popularna (ukryta?), Właśnie ją odkryłem dzisiajStrona CodeCup 2014.
-O
nie jest wymieniony woficjalna dokumentacja ani wman javac
... Dziwne.
W przyjętej odpowiedzi na podobnepytaniemożemy przeczytać, że:
Optymalizacja w Javie jest w większości wykonywana przez kompilator JIT w czasie wykonywania. Dlatego nie ma sensu próbować poinstruować go, aby zoptymalizował pewien sposób w czasie kompilacji (kiedy i tak tworzy tylko kod bajtowy). JIT prawie na pewno podejmie lepsze decyzje na miejscu, znając dokładne środowisko i obserwując rzeczywiste wzorce wykonywania określonych części kodu.
Moje pytanie brzmi:
Czy powinienem zawsze używać-O
opcja czy nie? Innymi słowy, kod zawsze działa szybciej-O
czy to w ogóle nie ma znaczenia?
Może wielkość klas może wzrosnąć tak bardzo, że ogólna wydajność spadnie? Lub JVM i tak zrobi inlinowanie, więc lepiej to zostawić?
Podobna historiabyło zgcc -O3
flaga.