cnutter
23p18 comments posted · 0 followers · following 0
15 years ago @ Union Station - Ruby I/O Performance -... · 1 reply · 0 points
With the client VM, after warmup, JRuby's run time is around 4.4s.
With the server vM, JRuby's run time improves to around 3.3s. This is a good improvement, but it's not as good as it should be.
There's a few specific aspects of this benchmark that JRuby currently does not optimize well. The nested "upto" blocks cause too much overhead in current JRuby. Blocks are ok, but nested blocks currently cause some issues for the way we optimize Ruby code.
I'll see if I can improve the sudoku benchmark.
I'm also not sure why you even included JRuby in this post, when you only post numbers for JRuby on a sudoku microbenchmark and a startup time benchmark. Perhaps it would be more interesting to see a real application running on JRuby, or perhaps actually show JRuby's IO performance numbers too.
15 years ago @ Union Station - Ruby I/O Performance -... · 1 reply · +2 points
Your JRuby numbers are invalid :)
15 years ago @ Union Station - JRuby 1.6.0 RC1 Released · 0 replies · +1 points
15 years ago @ Union Station - JRuby 1.6.0 RC1 Released · 0 replies · +1 points
Continuations are supported only as well as in previous versions of JRuby (that is, not well...the JVM does not support continuations).
15 years ago @ Union Station - Rubinius wants to help... · 0 replies · +3 points
Do not expect to have access to class method tables (we both implement them differently).
Do not try to find the various MRI runtime structures (like the AST, frames, or scope objects)...we have completely different execution models.
Do not expect C extension code to run concurrently (on JRuby now or on Rubinius when it supports concurrent execution). Because of the global nature of many C extensions' state, we both must ensure only one thread hits C code at a time.
And above all know that because JRuby and Rubinius must isolate C code from the locations of Ruby objects in memory, C extensions with very fine-grained APIs (e.g. every method on every class does a call-out to C) are going to perform *much* worse on JRuby and Rubinius due to the extra copying and indirection required. Design your APIs well and with these limitations very much in mind.
(I would also be lying if I said JRuby's C extension support were the recommended path forward. It will work well as a stopgap measure, but the ultimate solution will usually be to port to Java or find an equivalent Java library to use that doesn't suffer from performance and concurrency penalties.)
That said, we still want C extensions to work as well as possible just like the Rubinius guys, and we'll stand with them to educate people (and to work with CRuby's core team!) on how to write fast, reliable extensions.
(And of course the remaining points Brian makes about good OO design apply to any environment...I wholeheartedly agree!)
15 years ago @ Union Station - Introducing JRubyConf ... · 0 replies · +1 points
15 years ago @ LoGeek's softwar... - On JRuby, Resque and W... · 0 replies · +1 points
Have you considered using JRuby for the other end of your app too? It might be possible to do everything JRuby-based, if that would make sense for your application.
15 years ago @ Union Station - Monitoring Memory with... · 0 replies · +1 points
Part two will go into another tool for browsing JRuby heap dumps: The Eclipse Memory Analysis Tool.
15 years ago @ Union Station - Monitoring Memory with... · 0 replies · +1 points
"This article was originally published on Charles Nutter’s blog Headius."
I agree it could be made more prominent :)
15 years ago @ Union Station - Monitoring Memory with... · 1 reply · +1 points