Project

General

Profile

Misc #10983

Updated by nobu (Nobuyoshi Nakada) over 5 years ago

https://www.omniref.com/ruby/2.2.0/symbols/Proc/yield#annotation=4087638&line=711&hn=1 

 ~~~ruby 
 


 require 'benchmark/ips' 

 def block_call(&block) 
   block.call 
 end 

 def just_yield 
   yield 
 end 

 Benchmark.ips do |x| 
   x.report("call") do 
     block_call { 1 + 1 } 
   end 

   x.report("just yield") do 
     just_yield { 1 + 1 } 
   end 

   x.compare! 
 end 
 ~~~ 


 



 I run on Ruby 2.2.1 

 ~~~ 
 Calculating ------------------------------------- 
                 call      40.754k i/100ms 
           just yield      69.031k i/100ms 
 ------------------------------------------------- 
                 call      814.929k (± 4.0%) i/s -        4.075M 
           just yield        2.871M (±25.1%) i/s -       12.909M 

 Comparison: 
           just yield:    2871127.3 i/s 
                 call:     814929.3 i/s - 3.52x slower 
 ~~~

Back