Skip to content

Instantly share code, notes, and snippets.

@ljinke
Last active December 26, 2015 20:29
Show Gist options
  • Save ljinke/7208633 to your computer and use it in GitHub Desktop.
Save ljinke/7208633 to your computer and use it in GitHub Desktop.
performance of Ruby Proc and block
require 'benchmark'
def outer11(&bl)
inner1(&bl)
end
def outer12(&bl)
inner2(&bl)
end
def outer21
inner1 {yield}
end
def outer22
inner2 {yield}
end
def inner1(&bl)
bl.call
end
def inner2
yield
end
n = 100000
Benchmark.bmbm(10) do |rpt|
rpt.report("outer11") do
n.times {outer11{}}
end
rpt.report("outer12") do
n.times {outer12{}}
end
rpt.report("outer21") do
n.times {outer21{}}
end
rpt.report("outer22") do
n.times {outer22{}}
end
end
__END__
Output:
Rehearsal ---------------------------------------------
outer11 0.890000 0.010000 0.900000 ( 0.894500)
outer12 0.370000 0.000000 0.370000 ( 0.364880)
outer21 0.770000 0.000000 0.770000 ( 0.776638)
outer22 0.170000 0.000000 0.170000 ( 0.163393)
------------------------------------ total: 2.210000sec
user system total real
outer11 0.490000 0.000000 0.490000 ( 0.491969)
outer12 0.400000 0.000000 0.400000 ( 0.396264)
outer21 0.760000 0.000000 0.760000 ( 0.764508)
outer22 0.160000 0.000000 0.160000 ( 0.161982)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment