Hi all, Here are some tidbits about current JRuby trunk performance with a real application.
So, I'm running Mingle (http://studios.thoughtworks.com/mingle-project-intelligence) trunk, against a copy of some large (by Mingle's standards) production database. Fairly evolved load test. Comparing JRuby rev. 5338 with Ruby 1.8.5 p35. MRI is about 10-15% faster, but takes ~20% more memory. To elaborate on the memory footprint: after we made MetaClass#attached a weakref (drastically cutting Mingle's RAM usage in the process), 9 JRuby runtimes with Mingle fit into -Xmx350m, using ~450 Mb of RSS under load. A good full GC run takes the heap down to 250-270 Mb. In comparison, a single Mingle runtime on MRI uses up ~60 Mb RSS. For 9 runtimes, that's about 20% more memory than JRuby. Conclusion: as far as Mingle is concerned, JRuby trunk performs as well as MRI. Another interesting factoid is about JRuby JIT compiler. Mingle redefines some classes on each request, and for this reason doesn't gain much from JIT (this should change soon). In fact, in the above tests, Mingle was configured running in fully interpreted mode. When JRuby JIT compilation is enabled, it blows permgen out of all proportion. Not surprising, since each JITed method requires its own class and classloader, Mingle has a lot of methods, and there are 9 copies of everything. Sigh... -- Alexey Verkhovsky CruiseControl.rb [http://cruisecontrolrb.thoughtworks.com] RubyWorks [http://rubyworks.thoughtworks.com] --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email