Skip to content

Instantly share code, notes, and snippets.

@bobzoller
Forked from headius/dubymath.rb
Created February 3, 2010 06:20
Show Gist options
  • Save bobzoller/293383 to your computer and use it in GitHub Desktop.
Save bobzoller/293383 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'inline'
require 'duby_inline'
require 'benchmark'
class FastMath
def factorial_ruby(n)
f = 1
n.downto(2) { |x| f *= x }
return f
end
def fib_ruby(n)
if n < 2
n
else
fib_ruby(n - 2) + fib_ruby(n - 1)
end
end
inline :Duby do |builder|
builder.duby "
def factorial_duby(n:int)
f = 1
n.downto(2) { |x| f *= x }
return f
end
"
builder.duby "
def fib_duby(n:int)
if n < 2
n
else
fib_duby(n - 2) + fib_duby(n - 1)
end
end
"
end
end
math = FastMath.new
Benchmark.bmbm(30) {|bm|
5.times { bm.report("factorial_ruby") { 30000.times { math.factorial_ruby(30) } } }
5.times { bm.report("factorial_duby") { 30000.times { math.factorial_duby(30) } } }
5.times { bm.report("fib_ruby(35)") { math.fib_ruby(35) } }
5.times { bm.report("fib_duby(35)") { math.fib_duby(35) } }
}
New JDK: 1.6.0
Rehearsal -----------------------------------------------------------------
factorial_ruby 0.377000 0.000000 0.377000 ( 0.377000)
factorial_ruby 0.157000 0.000000 0.157000 ( 0.157000)
factorial_ruby 0.160000 0.000000 0.160000 ( 0.160000)
factorial_ruby 0.160000 0.000000 0.160000 ( 0.160000)
factorial_ruby 0.175000 0.000000 0.175000 ( 0.175000)
factorial_duby 0.161000 0.000000 0.161000 ( 0.161000)
factorial_duby 0.016000 0.000000 0.016000 ( 0.016000)
factorial_duby 0.015000 0.000000 0.015000 ( 0.015000)
factorial_duby 0.015000 0.000000 0.015000 ( 0.015000)
factorial_duby 0.016000 0.000000 0.016000 ( 0.016000)
fib_ruby(35) 2.818000 0.000000 2.818000 ( 2.818000)
fib_ruby(35) 2.719000 0.000000 2.719000 ( 2.719000)
fib_ruby(35) 2.716000 0.000000 2.716000 ( 2.716000)
fib_ruby(35) 2.714000 0.000000 2.714000 ( 2.714000)
fib_ruby(35) 2.717000 0.000000 2.717000 ( 2.717000)
fib_duby(35) 0.073000 0.000000 0.073000 ( 0.073000)
fib_duby(35) 0.072000 0.000000 0.072000 ( 0.072000)
fib_duby(35) 0.071000 0.000000 0.071000 ( 0.071000)
fib_duby(35) 0.071000 0.000000 0.071000 ( 0.071000)
fib_duby(35) 0.070000 0.000000 0.070000 ( 0.070000)
------------------------------------------------------- total: 15.293000sec
user system total real
factorial_ruby 0.166000 0.000000 0.166000 ( 0.166000)
factorial_ruby 0.165000 0.000000 0.165000 ( 0.164000)
factorial_ruby 0.166000 0.000000 0.166000 ( 0.165000)
factorial_ruby 0.163000 0.000000 0.163000 ( 0.163000)
factorial_ruby 0.165000 0.000000 0.165000 ( 0.165000)
factorial_duby 0.020000 0.000000 0.020000 ( 0.020000)
factorial_duby 0.016000 0.000000 0.016000 ( 0.016000)
factorial_duby 0.017000 0.000000 0.017000 ( 0.017000)
factorial_duby 0.015000 0.000000 0.015000 ( 0.015000)
factorial_duby 0.016000 0.000000 0.016000 ( 0.016000)
fib_ruby(35) 2.730000 0.000000 2.730000 ( 2.730000)
fib_ruby(35) 2.731000 0.000000 2.731000 ( 2.731000)
fib_ruby(35) 2.725000 0.000000 2.725000 ( 2.725000)
fib_ruby(35) 2.729000 0.000000 2.729000 ( 2.729000)
fib_ruby(35) 2.719000 0.000000 2.719000 ( 2.719000)
fib_duby(35) 0.070000 0.000000 0.070000 ( 0.070000)
fib_duby(35) 0.070000 0.000000 0.070000 ( 0.070000)
fib_duby(35) 0.069000 0.000000 0.069000 ( 0.069000)
fib_duby(35) 0.071000 0.000000 0.071000 ( 0.071000)
fib_duby(35) 0.070000 0.000000 0.070000 ( 0.070000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment