Skip to content

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

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

yogeshjain999
Copy link

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

@yogeshjain999
Copy link
Author

Hey guys, any updates on this ?

@nirvdrum
Copy link
Collaborator

nirvdrum commented Apr 9, 2021

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
Copy link
Author

@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

Copy link

@krtschmr krtschmr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice one

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants