Measuring JVM performance
It was a “JVM performance week” in JRuby-land. It all started when some recent code changes is JRuby caused an interesting performance degradation with JDK6 on multi-core CPUs. See the original post to the [jvm-l] list and extended coverage of what happened on Charlie’s blog. So, while following the discussion and participating, I learned a few new things and got some interesting additional info and links that I’d like to share:
- Let’s start with basics. John Rose posted a good starting guide for those who’d like to micro-benchmark things on JVM: So You Want to Write a Micro-Benchmark.
- Performance techniques used in the Hotspot JVM wiki entry with the list of optimizations JVM does, sweet and to the point.
- Fundamental work by Ulrich Drepper: What Every Programmer Should Know About Memory, a MUST read, but painful
- Deep dive into assembly code from Java blog post by Kohsuke Kawaguchi, on how to print out the assembly code that JIT is producing.
- Examining generated code with OpenJDK 7, exciting stuff!
- Polymorphism Performance Mysteries Explained, the Issue #158 of The Java Specialists’ Newsletter.
- How fast is Java Volatile? or Atomic? or Synchronized?, with nice charts and comparisons.
- Escape analysis can help optimize synchronization by Brian Goetz.
Enjoy!
April 7th, 2008 at 2:32 pm
[...] Measuring JVM performance – The Empty Way (tags: java performance jvm jruby) [...]
April 17th, 2008 at 11:00 pm
Russian readers might also enjoy an article written by the Russian Hotspot QE group:
http://blogs.sun.com/vmrobot/entry/microbenchmarking_hotspot
April 18th, 2008 at 2:51 pm
Kirill, thanks, very useful indeed.
February 6th, 2009 at 1:34 pm
Nice tips!!! Thanks for sharing
March 10th, 2009 at 5:50 pm
ohhh nice info