Optimize Ledger.Get() by making Forest.Read() use ~5x fewer allocs/op and run faster #2476
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.
Changes
Change
Forest.Read()
to return[]ledger.Value
without deep copying payload keys. This avoids 4 heap allocation per key.This change doesn't affect
Ledger.Get()
(the caller) because it discards the payload keys.Benchmark comparison for batch read size of 100 keys
Closes #2475