Hi Uliano, The way I get the JIT to preprocess your fib code is simply to call the method once. For example I wrapped your code in a class (not that I am saying that it is necessary to do this - its just the first thing i tried and it worked) and then.
(for example) afib.fib_iter(sum,10) and then time test with afib.fib_iter(sum,4_000_000) I think you have to also keep in mind that the method dispatch in macruby is a work in progress and that method dispatch time is always going to be different between different ruby implementations. In your code for example passing a block and dispatching that block always with yield could be a performance stopper - when i rewrote your original code to not have these yield calls I got much improved performance: #command line: ruby or macruby fib.rb #ruby 1.8.7 recursive sum = 4613732 time = 18.795026 iterative sum = 4613732 time = 3.0e-05 #macruby beta 0.5-2 #no pre compile recursive sum = 4613732 time = 0.585983 iterative sum = 4613732 time = 0.007148 #macruby beta 0.5-2 #run it once first recursive sum = 4613732 time = 0.591092 iterative sum = 4613732 time = 0.002592 #macruby beta 0.5-2 #run it once first and using code without yields. recursive sum = 4613732 time = 0.586312 iterative sum = 4613732 time = 3.0e-06 hope that helps, John On Nov 23, 2009, at 8:30 , Uliano Guerrini wrote: > Thank you all > > I didn't realize that JIT in macruby is compiling on the fly the code piece a > piece (I thought that a source file was the compilation unit) and so JIT time > to compile the block was inside my time metrics > > I re-run the test looping many times and the results are speaking for > themselfs: > > uliano$ macruby fib.rb > sum of even Fibonacci less than 4000000 = 4613732 > time = 0.637182 > uliano$ /usr/bin/ruby fib.rb > sum of even Fibonacci less than 4000000 = 4613732 > time = 4.710929 > uliano$ ruby fib.rb # this is Ruby 1.9.1 from > macports > sum of even Fibonacci less than 4000000 = 4613732 > time = 0.660384 > uliano$ macrubyc -o fib fib.rb > uliano$ ./fib > sum of even Fibonacci less than 4000000 = 4613732 > time = 0.61873 > > > > > > _______________________________________________ > MacRuby-devel mailing list > [email protected] > http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel _______________________________________________ MacRuby-devel mailing list [email protected] http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
