Hi,

On Jul 1, 2009, at 8:23 AM, Jjgod Jiang wrote:
Hi all,

On Wed, Jul 1, 2009 at 9:26 PM, zhida cheng<[email protected]> wrote:
But in this very simple (I think) script, Macruby is 10x slower than
built-in Ruby in OSX 10.5.7
It's for reading atom positions, calculating distances, make a summary and
find out nearest atoms.
You can get the codes here: http://gist.github.com/138760

I'd like to confirm this report with two Shark profiling results:

http://omploader.org/vMXducQ/macruby.mshark (Running the ruby program dist.rb
given by Zhida with macruby, trunk version)

http://omploader.org/vMXdudQ/ruby.mshark (Running the ruby program dist.rb
given by Zhida with ruby, the version shipping with Mac OS X Leopard)

From the first result, we can see most of the time is spent on libauto.dylib,
the garbage collector library, especially spinlocks in that library. I suppose
that may be a direction for optimization?


I didn't look at the shark profiling results but I am pretty sure the problem here is because we need to box the fixnums in order to insert them into collections (NSArray), because NSArray expects true Objective-C objects and fixnums are immediate types. This means a call to the object allocator and a call to the GC to set the write barrier for every object insertion.

We have a plan to fix this in experimental, it's in our TODO list. The idea is to make a specialized subclass of NSArray / NSDictionary only for pure Ruby use, where the elements can be immediate. We should then have much better performance results (close to 1.9 maybe).

Laurent
_______________________________________________
MacRuby-devel mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to