Java specific issues
Main difficulties are in writing low-level benchmarks to cope with JIT compilation.
Want to measure compiled, not interpreted, performance (JIT warm-up effect).
Don’t want JIT to be too clever, and optimise away what we are measuring!
- avoid dead code removal
- avoid “special cases” (e.g. addition of zero) that can be detected at run time.
How should we benchmark garbage collection??