JVM og Compiler optimering
Jeg leder efter eksempler på hvilke optimerings teknikker som f.eks sun's JVM benytter og som compileren måske også kan foretage.jvm specifikationen 91-9.2 siger ikke meget... der benyttes sikkert meget avancerede teknikker men det er nu mere noget i retning af strength reduction, loop unrolling, constant proagation.. og hvilke som bedst foretages af jvm.
Den bog jeg sidder med siger:
Warning
The optimizations described in this section can also be performed automatically by the JVM implementation itself. Generally, the more effort you go through to perform these optimizations yourself, the harder it will be for the JVM's optimizer to perform additional optimizations.
Et eksempel er at med strength reduction hvor x * 32 er langsommere end x << 5 .. men at forskellige operationer kan have forskellige hastighed på forskellige JVM's og derfor bliver optimeringen best foretaget af JVM.
En ting som loop unrolling kan også give en forøgelse i hastighed.. men på et system med begrænset plads er vi måske ikke interreseret i at bytecoden fylder meget mere.
Kender i andre eksempler..
og så lige et til spørgsmål... constant folding vil give et mindre footprint
f.eks
int seconds_in_a_day = 60*60*24;
vil blive til
bipush 60
bipush 60
imul
bipush 24
imul
Men det kan så igen optimeres til
ldc 86400
Af compileren... men kan man forvente at jvm også foretage denne optimering hvis compileren ikke gør det?
Så hvad jeg kort leder efter er eksempler, links elller hvad i nu kan bidrage med.