Improve performance of method call via delegate_all
#930
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently,
delegatable?
callprivate_methods
to check method is private or not. Theprivate_methods
generates an Array of methods per call. So a method call viadelegate_all
generates an extra Array every time.This patch use
private_method_defined?
instead ofprivate_methods
. This reduce the extra Array.The inherit argument for
private_method_defined?
is supported since Ruby 2.6. So this patch only works for >= Ruby 2.6. Rubies old than Ruby 2.6 keep usingprivate_methods
.Ref: https://bugs.ruby-lang.org/issues/14944
Benchmark is here.
Description
Detail your changes here.
A few sentences describing the overall goals of the pull request's commits will suffice.
Some questions you might answer:
Testing
Outline steps to test your changes.
To-Dos
References