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