Replace BytesTrieSet with HashSet#9641
Merged
siladu merged 4 commits intohyperledger:mainfrom Jan 27, 2026
Merged
Conversation
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
macfarla
pushed a commit
to CPerezz/besu
that referenced
this pull request
Feb 6, 2026
Improves performance of CREATE, CREATE2, SELFDESTRUCT and jumpdest analysis and no visible regressions including *CALL, according to https://github.com/ethereum/execution-specs/tree/c6c380acffa586cfd683384fb2e09348e9a97c03/tests/benchmark/compute benchmark suite
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Related to #9165
(Replaces #9166)
This PR effectively reverts #6069 by wholesale removing BytesTrieSet and going back to using HashSet as was the case with this PR: #5537
Benchmarks show improvements across CREATE, CREATE2, SELFDESTRUCT and jumpdest analysis and no regressions including *CALL.
No mainnet improvement/regression detected, newPayload response time p50:
Performed benchmarking using
evm block-testand the eest benchmark compute suite as of ethereum/execution-specs@2c83b84Ran https://github.com/ethereum/execution-specs/tree/forks/amsterdam/tests/benchmark/compute/instruction
and https://github.com/ethereum/execution-specs/tree/forks/amsterdam/tests/benchmark/compute/scenario
ignoring the precompile suite.
Instruction Benchmark: Control vs replace-BytesTrieSet
Scenario Benchmark Results: Control vs replace-BytesTrieSet
Methodology: 10 iterations each, using evmtool block-test with execution-focused tests
Summary
Result: Test is 11.0% faster (687 ms saved)
Top Improvements
Potential Regressions
Note: Small regressions (<5%) are within measurement variance (CV typically 5-15%)
All Tests (sorted by improvement)