Per round tx blooms #3
Draft
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.
Summary
This pull request introduces bloom filters to improve the performance of
ledger.LookupTxid, in particular for the case of looking up a TXID that does not exist in the given round.Performance
This pull request includes several benchmarks. Those benchmarks aim towards proving that:
ledger.LookupTxidis improved drastically when the TXID doesn't exist.ledger.LookupTxidfor a TXID that does exist, the performance penalty introduced by bloom filters relatively low.ledger.AddBlock, the performance penalty introduced by bloom filters is relatively low.Case 1: Measure miss performance
This benchmark measures the performance of calling
ledger.LookupTxidwith a non-existent Txid.Measurements are made with and without bloom filters.
Results
The benchmark showed a ~100% speedup when using bloom filters.
Case 2: Measure hit performance
This benchmark measures the performance of calling
ledger.LookupTxidwith a valid Txid.Measurements are made with and without bloom filters.
Results
The benchmark showed a ~3% slowdown when using bloom filters.
Case 3: Measure bloom filter insertion cost
This benchmark measures the performance of calling
ledger.AddBlockwith and without bloom filters.Results
The benchmark showed a ~4% slowdown when using bloom filters