Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

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

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

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

Successfully merging this pull request may close these issues.

3 participants