James Gosling: on the Java Road
Friday April 04, 2008
Hotspot performance
A few days ago Kohsuke Kawaguchi posted
a really cool blog entry titled a
“Deep dive into assembly code from Java”.
It's a pile of fascinating (if gory) assembly code with commentary. Some things to notice:
- Really aggressive inlining
- Even storage allocation & initialization gets inlined - new T() really is as efficient as C's alloca() (and it beats the pants off malloc())
- Careful management of cache prefetching
- Deep understanding of variablity between the flavors of x86 machines
- Loop unrolling with warmup/cooldown
- "theorum proving away" of array index checks (and many other things)
- much cleverness with locks
I've had several run-ins in recent months with crusty C (and a few Fortran) programmers who say "you must be faking your benchmarks!". Nope. The HotSpot crew has done a truly great piece of work.
Permalink