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.
Builds on the previous performance-related pull request with a more radical variation on the class version of
memoize
. This time it defines a method that replaces itself with anattr_reader
before setting the instance variable using the supplied block. This makes the first call to the memorised method very expensive, but subsequent calls become very cheap.In testing, this yielded an impressive performance improvement when a memoized method was called a very large number of times in a given instance's lifetime. However, the break-even point was about 200 calls, so it's not really practical, but I thought I'd put it up for interest's sake.