fastruby / fast-ruby

:dash: Writing Fast Ruby :heart_eyes: -- Collect Common Ruby idioms.
https://github.com/fastruby/fast-ruby
5.67k stars 376 forks source link

Add comparison for method vs forwarded method vs delegated method #182

Open yogeshjain999 opened 4 years ago

yogeshjain999 commented 4 years ago

Add benchmarks to understand when to define method explicitly, forward method with def_delegator or use SimpleDelegator.

yogeshjain999 commented 3 years ago

Hey guys, any updates on this ?

nirvdrum commented 3 years ago

I just tried running this locally and the benchmark doesn't work with Ruby 2.7. It looks like you need to add require 'delegate'.

yogeshjain999 commented 3 years ago

@nirvdrum Thanks, fixed it.

It seem the difference between forwarded and delegated method has been increased in ruby >= 2.7.

Warming up --------------------------------------
              method   307.381k i/100ms
    forwarded method   228.038k i/100ms
    delegated method   110.079k i/100ms
Calculating -------------------------------------
              method      3.103M (± 0.9%) i/s -     15.676M in   5.052459s
    forwarded method      2.299M (± 1.2%) i/s -     11.630M in   5.059510s
    delegated method      1.102M (± 0.9%) i/s -      5.614M in   5.095893s

Comparison:
              method:  3102988.8 i/s
    forwarded method:  2298988.2 i/s - 1.35x  (± 0.00) slower
    delegated method:  1101769.4 i/s - 2.82x  (± 0.00) slower