Given the following code:
public class MainClass {
public static int f(){
int i=0;
i++;
return i;
}
}
the c
Is so directly translated that it makes me hard to believe that java compiler does any optimizations at all.
Indeed. Most Java optimization is performed at JIT-time instead. The Java maintainers found out quite a while ago that in many cases, optimizations performed at compile-time actually hindered more important optimizations at JIT-time.
For a few years now, the -O
command-line argument has done nothing - and very deliberately so.
Also, by moving optimization to JVM, all JVM based languages can benefit. Compilers (not just javac) have a relatively easier job; language inventors don't have to be optimization experts.