On Jan 1, 2006, at 8:12 AM, Sven Johansson wrote: >> require 'benchmark' >> >> REP = 1_000_000 >> >> def foo(n) 0 + n end >> >> Benchmark.bmbm(10) do |bm| >> bm.report("direct") do >> REP.times { x = 0 + 1 } >> end >> >> bm.report("method") do >> REP.times { x = foo(1) } >> end >> end > > Ah, interesting. And a fine exemple of how to use the internal > benchmarking support for us Ruby newbies. More to the point, it shows > that it isn't so bad - I was thinking of order-of-magnitude losses, > and > here is merely a factor two or so, and that's for essentially empty > method bodies... it will do. :) No, you discovered the difference between 1 method invocation (Fixnum. +) and 2 (Kernel.foo and Fixnum.+). If you are worried about times, I'd look at using a good profiler instead of the benchmarks so you can get insight on where your time is actually being spent (it sure isn't on Fixnum.+). Don't use the standard profiler, use zenprofiler or shugo's profiler. -- ryand-ruby / zenspider.com - http://blog.zenspider.com/ http://rubyforge.org/projects/ruby2c/ http://rubyforge.org/projects/rubyinline/