[MacRuby-devel] branches/experimental

Charles Oliver Nutter charles.nutter at sun.com
Sun Mar 29 12:09:33 PDT 2009


Laurent Sansonetti wrote:
> I don't think it's a good idea to provide a way to turn off 
> optimizations and I do not see the point in benchmarking dead code in 
> general (I would never do this).

I think it's actually very useful to provide a way to turn off specific 
optimizations, if only because they may eventually run into cases where 
they break something. But they're also useful when writing benchmarks 
that have dead code on purpose...

For some benchmarks it's very difficult to get a reasonable measurement 
without forcing some dead code to run. For example, benchmarking a 
single local variable access gets completely lost in the method or block 
invocation that surrounds it. By forcing several successive local 
variable accesses to execute, you get a better picture of what the 
actual cost is.

At any rate, if you have good benchmarks for things like local 
variables, we can certainly use those for now.

> Good to know, I just hope they are not doing this 30 million times in a 
> loop or something :-)

Well, it gets called numerous times per request.

In the end, though, Rails performance has not actually been very 
execution-bound. We've had Ruby code running faster than Ruby 1.8 for 
almost two years, but we only recently started to post 10-20% 
performance gains for Rails itself. Rails performance, and probably most 
large applications' performance, all seem heavily dependent on core 
classes being as blazing fast as possible. It's a balancing act, and we 
often completely ignore execution performance for a whole release to 
work on core classes instead.

> Yes, Binding is not implemented yet. Do not worry I have read the MRI 
> source code and know how Binding works and how to provide a compliant 
> implementation. Please stay tuned.

Well, I'd certainly like to hear what you're planning for this 
particular case. Just let me know when you're ready to talk about it. 
I've gone over several options when optimizing JRuby, and the 
block-as-binding issue makes most of them infeasible.

- Charlie


More information about the MacRuby-devel mailing list