Skip to content

Instantly share code, notes, and snippets.

@sillypog
Created July 8, 2016 01:20
Show Gist options
  • Save sillypog/99513fa1f43ad65449f9c7c5afeb0b5f to your computer and use it in GitHub Desktop.
Save sillypog/99513fa1f43ad65449f9c7c5afeb0b5f to your computer and use it in GitHub Desktop.
require 'benchmark' # standard library module
def once_yield
if block_given?
yield
end
end
def once_block(&block)
if block
block.call
end
end
def once_yieldblock(&block)
if block
yield
end
end
n = 10000000
Benchmark.bm do |x|
x.report('yield: ') { n.times do; once_yield {1+1}; end }
x.report('block ') { n.times do; once_block {1+1}; end }
x.report('yieldblock ') { n.times do; once_yieldblock {1+1}; end }
x.report('yield no block: ') { n.times do; once_yield; end }
x.report('block no block ') { n.times do; once_block; end }
x.report('yieldblock no block') { n.times do; once_yieldblock; end }
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment