paradigmxyz
reth
BlogDocsChangelog

perf(provider): batch hashed state across blocks

#21108
Comparing
joshie/batch-hashed-writes
(
f31fad2
) with
main
(
012fbf5
)
CodSpeed Performance Gauge
0%
Untouched
118
Skipped
7

Benchmarks

Skipped (7)

Passed

collect_twice[100]
crates/trie/common/benches/hashed_state.rs::benches::bench_from_parallel_iterator::HashedPostState::from_par_iter
CodSpeed Performance Gauge
+5%
92.5 µs88.3 µs
hash builder[init size 10000 | update size 100 | num updates 5]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
+1%
44.7 ms44.3 ms
collect_twice[1000]
crates/trie/common/benches/hashed_state.rs::benches::bench_from_parallel_iterator::HashedPostState::from_par_iter
CodSpeed Performance Gauge
+1%
734.4 µs727.2 µs
hash builder[init size 10000 | update size 1000 | num updates 1]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
+1%
27.3 ms27 ms
prefix set | size: 10 | `BTreeSet` with `Iterator:any` lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
+1%
3.9 µs3.8 µs
hash builder[init size 10000 | update size 100 | num updates 3]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
+1%
27.4 ms27.2 ms
hash builder[init size 10000 | update size 1000 | num updates 3]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
+1%
80.3 ms79.8 ms
size 100000 | updated 1% | depth 4
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
+1%
11.5 ms11.4 ms
hash builder[init size 10000 | update size 100 | num updates 10]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
+1%
87.5 ms87 ms
V2[dataset_1024/targets_2048]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
+1%
11.5 ms11.5 ms
hash builder[init size 1000 | update size 100 | num updates 10]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
25.3 ms25.2 ms
Legacy[dataset_128/targets_16]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
738.7 µs736.1 µs
sparse trie[init size 10000 | update size 1000 | num updates 1]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
11.7 ms11.7 ms
size 100000 | updated 1% | depth 3
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
0%
21.8 ms21.8 ms
fold_reduce[100]
crates/trie/common/benches/hashed_state.rs::benches::bench_from_parallel_iterator::HashedPostState::from_par_iter
CodSpeed Performance Gauge
0%
156.6 µs156.2 µs
hash builder[5000]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves::calculate root from leaves
CodSpeed Performance Gauge
0%
22.3 ms22.3 ms
hash builder[init size 1000 | update size 1000 | num updates 3]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
17.7 ms17.6 ms
validate_blob | num blobs: 2 | ValidateBlob
crates/primitives/benches/validate_blob_tx.rs::validate_blob::blob_validation::Blob Transaction KZG validation
CodSpeed Performance Gauge
0%
149.7 µs149.4 µs
sparse trie[init size 1000 | update size 1000 | num updates 5]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
24.9 ms24.9 ms
size 100000 | updated 1% | depth 1
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
0%
24.9 ms24.8 ms
size 100000 | updated 1% | depth 2
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
0%
24.7 ms24.7 ms
sparse trie[init size 1000 | update size 100 | num updates 3]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
3.3 ms3.3 ms
size 100000 | updated 1% | depth 0
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
0%
24.8 ms24.8 ms
prefix set | size: 100 | `Vec` with custom cursor lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
0%
16.7 µs16.7 µs
fold_reduce[1000]
crates/trie/common/benches/hashed_state.rs::benches::bench_from_parallel_iterator::HashedPostState::from_par_iter
CodSpeed Performance Gauge
0%
1.4 ms1.4 ms
sparse trie[5000]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves::calculate root from leaves
CodSpeed Performance Gauge
0%
28.4 ms28.4 ms
hash builder[init size 10000 | update size 100 | num updates 1]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
9.6 ms9.6 ms
sparse trie[init size 1000 | update size 100 | num updates 1]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
1.1 ms1.1 ms
sparse trie[init size 1000 | update size 100 | num updates 5]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
5.4 ms5.4 ms
hash builder[init size 10000 | update size 1000 | num updates 5]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
132.4 ms132.3 ms
hash builder[init size 1000 | update size 1000 | num updates 5]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
29.4 ms29.3 ms
validate_blob | num blobs: 4 | ValidateBlob
crates/primitives/benches/validate_blob_tx.rs::validate_blob::blob_validation::Blob Transaction KZG validation
CodSpeed Performance Gauge
0%
151.9 µs151.8 µs
sparse trie[init size 1000 | update size 100 | num updates 10]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
10.8 ms10.8 ms
Legacy[dataset_1024/targets_2048]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
19.6 ms19.6 ms
hash builder[1000]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves::calculate root from leaves
CodSpeed Performance Gauge
0%
4.5 ms4.5 ms
receipts root | size: 10 | HashBuilder
crates/trie/trie/benches/trie_root.rs::benches::trie_root_benchmark::Receipts root calculation
CodSpeed Performance Gauge
0%
111.7 µs111.7 µs
fold_reduce[10000]
crates/trie/common/benches/hashed_state.rs::benches::bench_from_parallel_iterator::HashedPostState::from_par_iter
CodSpeed Performance Gauge
0%
12.1 ms12.1 ms
prefix set | size: 100 | `BTreeSet` with `Iterator:any` lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
0%
149.3 µs149.2 µs
validate_blob | num blobs: 3 | ValidateBlob
crates/primitives/benches/validate_blob_tx.rs::validate_blob::blob_validation::Blob Transaction KZG validation
CodSpeed Performance Gauge
0%
150.8 µs150.8 µs
sparse trie[init size 10000 | update size 100 | num updates 3]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
6.7 ms6.7 ms
receipts root | size: 1000 | HashBuilder
crates/trie/trie/benches/trie_root.rs::benches::trie_root_benchmark::Receipts root calculation
CodSpeed Performance Gauge
0%
9.1 ms9.1 ms
sparse trie[init size 10000 | update size 100 | num updates 10]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
22.1 ms22.1 ms
ordered_trie_root
crates/trie/trie/benches/trie_root.rs::benches::trie_root_benchmark::Receipts root calculation::receipts root | size: 1000 | triehash
CodSpeed Performance Gauge
0%
11.8 ms11.8 ms
V2[dataset_10240/targets_1]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
637.8 ms637.6 ms
Legacy[dataset_10240/targets_1]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
637.5 ms637.4 ms
validate_blob | num blobs: 6 | ValidateBlob
crates/primitives/benches/validate_blob_tx.rs::validate_blob::blob_validation::Blob Transaction KZG validation
CodSpeed Performance Gauge
0%
154.7 µs154.6 µs
sparse trie[init size 1000 | update size 1000 | num updates 10]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
49.7 ms49.6 ms
recover ECDSA
crates/primitives/benches/recover_ecdsa_crit.rs::benches::criterion_benchmark
CodSpeed Performance Gauge
0%
206.6 µs206.6 µs
sparse trie[init size 10000 | update size 1000 | num updates 10]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
111.5 ms111.5 ms
V2[dataset_128/targets_16]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
697.4 µs697.3 µs
prefix set | size: 1000 | `BTreeSet` with `Iterator:any` lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
0%
14.9 ms14.9 ms
sparse trie[init size 10000 | update size 1000 | num updates 5]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
56 ms56 ms
prefix set | size: 10 | `Vec` with custom cursor lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
0%
3.3 µs3.3 µs
V2[dataset_10240/targets_128]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
638.2 ms638.2 ms
sequence hashing[1000]
crates/trie/trie/benches/hash_post_state.rs::post_state::hash_post_state::Hash Post State
CodSpeed Performance Gauge
0%
2.6 s2.6 s
parallel hashing[100]
crates/trie/trie/benches/hash_post_state.rs::post_state::hash_post_state::Hash Post State
CodSpeed Performance Gauge
0%
256.9 ms256.9 ms
Legacy[dataset_128/targets_64]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
809.8 µs809.8 µs
sparse trie[init size 10000 | update size 100 | num updates 5]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
11.1 ms11.1 ms
Legacy[dataset_10240/targets_128]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
654.2 ms654.3 ms
sequence hashing[100]
crates/trie/trie/benches/hash_post_state.rs::post_state::hash_post_state::Hash Post State
CodSpeed Performance Gauge
0%
256.8 ms256.9 ms
ordered_trie_root
crates/trie/trie/benches/trie_root.rs::benches::trie_root_benchmark::Receipts root calculation::receipts root | size: 100 | triehash
CodSpeed Performance Gauge
0%
1.2 ms1.2 ms
hash builder[init size 1000 | update size 100 | num updates 3]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
7.7 ms7.7 ms
fold_reduce[50000]
crates/trie/common/benches/hashed_state.rs::benches::bench_from_parallel_iterator::HashedPostState::from_par_iter
CodSpeed Performance Gauge
0%
71.4 ms71.4 ms
validate_blob | num blobs: 1 | ValidateBlob
crates/primitives/benches/validate_blob_tx.rs::validate_blob::blob_validation::Blob Transaction KZG validation
CodSpeed Performance Gauge
0%
146.8 µs146.8 µs
collect_twice[50000]
crates/trie/common/benches/hashed_state.rs::benches::bench_from_parallel_iterator::HashedPostState::from_par_iter
CodSpeed Performance Gauge
0%
42.6 ms42.6 ms
Legacy[dataset_128/targets_1]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
706 µs706.1 µs
hash builder[init size 1000 | update size 100 | num updates 5]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
12.7 ms12.7 ms
V2[dataset_10240/targets_64]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
638.1 ms638.3 ms
sparse trie[init size 1000 | update size 1000 | num updates 3]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
15 ms15 ms
Legacy[dataset_10240/targets_64]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
645.9 ms646.1 ms
receipts root | size: 100 | HashBuilder
crates/trie/trie/benches/trie_root.rs::benches::trie_root_benchmark::Receipts root calculation
CodSpeed Performance Gauge
0%
936.7 µs937.1 µs
Legacy[dataset_10240/targets_512]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
702.9 ms703.2 ms
Legacy[dataset_10240/targets_16]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
639.3 ms639.6 ms
V2[dataset_128/targets_2048]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
1.2 ms1.2 ms
V2[dataset_10240/targets_512]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
638.3 ms638.7 ms
V2[dataset_10240/targets_16]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
637.9 ms638.2 ms
prefix set | size: 1000 | `Vec` with custom cursor lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
0%
146.1 µs146.2 µs
prefix set | size: 1000 | `BTreeSet` with `BTreeSet:range` lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
0%
469.3 µs469.6 µs
parallel hashing[1000]
crates/trie/trie/benches/hash_post_state.rs::post_state::hash_post_state::Hash Post State
CodSpeed Performance Gauge
0%
2.6 s2.6 s
Legacy[dataset_10240/targets_2048]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
868.7 ms869.5 ms
sparse trie[init size 10000 | update size 100 | num updates 1]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
2.3 ms2.3 ms
sparse trie[init size 10000 | update size 1000 | num updates 3]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
33.8 ms33.9 ms
hash builder[init size 1000 | update size 1000 | num updates 10]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
58.5 ms58.6 ms
collect_twice[10000]
crates/trie/common/benches/hashed_state.rs::benches::bench_from_parallel_iterator::HashedPostState::from_par_iter
CodSpeed Performance Gauge
0%
6.8 ms6.8 ms
hash builder[init size 10000 | update size 1000 | num updates 10]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
262.3 ms262.6 ms
V2[dataset_10240/targets_2048]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
638.9 ms639.6 ms
ordered_trie_root
crates/trie/trie/benches/trie_root.rs::benches::trie_root_benchmark::Receipts root calculation::receipts root | size: 10 | triehash
CodSpeed Performance Gauge
0%
132 µs132.2 µs
validate_blob | num blobs: 5 | ValidateBlob
crates/primitives/benches/validate_blob_tx.rs::validate_blob::blob_validation::Blob Transaction KZG validation
CodSpeed Performance Gauge
0%
153.3 µs153.5 µs
sparse trie[1000]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves::calculate root from leaves
CodSpeed Performance Gauge
0%
5.7 ms5.7 ms
V2[dataset_128/targets_64]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
732 µs733.5 µs
V2[dataset_1024/targets_1]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
10.5 ms10.5 ms
Legacy[dataset_128/targets_128]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
868.4 µs870.1 µs
prefix set | size: 100 | `BTreeSet` with `BTreeSet:range` lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
0%
40 µs40.1 µs
Legacy[dataset_1024/targets_1]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
10.5 ms10.5 ms
Legacy[dataset_1024/targets_64]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
11.4 ms11.4 ms
Legacy[dataset_1024/targets_16]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
10.7 ms10.7 ms
hash builder[init size 1000 | update size 1000 | num updates 1]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
0%
5.9 ms5.9 ms
V2[dataset_1024/targets_128]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
10.7 ms10.7 ms
V2[dataset_1024/targets_64]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
10.6 ms10.6 ms
V2[dataset_1024/targets_16]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
10.5 ms10.6 ms
V2[dataset_128/targets_1]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
677.8 µs680.8 µs
Legacy[dataset_1024/targets_128]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
0%
12.1 ms12.2 ms
Legacy[dataset_1024/targets_512]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
-1%
15.3 ms15.4 ms
sparse trie[init size 1000 | update size 1000 | num updates 1]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
-1%
5.1 ms5.1 ms
V2[dataset_1024/targets_512]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
-1%
11 ms11 ms
hash builder[init size 1000 | update size 100 | num updates 1]
crates/trie/sparse/benches/root.rs::root::calculate_root_from_leaves_repeated::calculate root from leaves repeated
CodSpeed Performance Gauge
-1%
2.6 ms2.6 ms
prefix set | size: 10 | `BTreeSet` with `BTreeSet:range` lookup
crates/trie/common/benches/prefix_set.rs::prefix_set::prefix_set_lookups::Prefix Set Lookups
CodSpeed Performance Gauge
-1%
5.1 µs5.1 µs
Legacy[dataset_128/targets_2048]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
-1%
1.2 ms1.2 ms
V2[dataset_128/targets_128]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
-1%
740.7 µs750.7 µs
V2[dataset_128/targets_512]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
-1%
848.3 µs860.1 µs
Legacy[dataset_128/targets_512]
crates/trie/trie/benches/proof_v2.rs::proof_comparison::bench_proof_algos::Proof
CodSpeed Performance Gauge
-2%
995.5 µs1,012.9 µs
size 100000 | updated 1% | depth 5
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
-2%
8.3 ms8.5 ms
size 100000 | updated 0.1% | depth 4
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
-2%
1.4 ms1.4 ms
size 100000 | updated 0.1% | depth 3
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
-3%
2.4 ms2.5 ms
size 100000 | updated 0.1% | depth 0
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
-3%
3.6 ms3.7 ms
size 100000 | updated 0.1% | depth 1
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
-3%
3.5 ms3.7 ms
size 100000 | updated 0.1% | depth 5
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
-3%
1.1 ms1.1 ms
size 100000 | updated 0.1% | depth 2
crates/trie/sparse/benches/rlp_node.rs::rlp_node::update_rlp_node_level::update rlp node level
CodSpeed Performance Gauge
-3%
3.4 ms3.5 ms

Commits

Click on a commit to change the comparison range
Base
main
012fbf5
-0.01%
perf(provider): batch hashed state writes across blocks Batches write_hashed_state calls across all blocks in save_blocks to improve I/O sequentiality. Previously, each block's hashed state was written separately, causing random I/O as keys from different blocks interleave in the B-tree. For example, block N+1's hashed addresses might sort before block N's, causing the cursor to jump backwards. This change collects all blocks' hashed state into a single sorted collection using extend_ref before writing, enabling sequential I/O. This follows the same pattern already used for transaction hash writes. Expected impact: Reduced page faults in the Persistence thread where profiling showed 21% of time in pagecache_get_page/xas_load and 37.5% in page fault handling.
cf8f79c
1 day ago
by gakonst
-0.11%
perf(provider): use k-way merge for batched hashed state writes Implements a k-way merge algorithm for writing hashed state from multiple blocks in save_blocks. This replaces the previous extend_ref approach which cloned data into a combined vec. Key improvements: - No cloning: uses Arc references to per-block hashed state - Deduplication: same key across blocks is written only once (last wins) - Sequential I/O: writes in globally sorted key order across all blocks - Streaming: uses BinaryHeap for O(n log k) merge without materializing For hashed accounts: - Merges sorted account lists from all blocks - Deduplicates by hashed address, taking latest block's value - Streams directly to MDBX cursor For hashed storage: - Collects all (address, block_idx, storage) tuples - Sorts by address, then groups for per-address merge - Handles storage wipes correctly (latest wipe invalidates earlier) - K-way merge within each address's storage slots This reduces both allocation overhead and redundant database writes, addressing the 21% pagecache_get_page and 37.5% page fault overhead observed in Persistence thread profiling.
f3fe460
1 day ago
by gakonst
+0.07%
perf(provider): batch plain state writes in save_blocks Add write_state_changes_merged to batch PlainAccountState, PlainStorageState, and Bytecodes writes across multiple blocks using flatten-sort-dedupe approach. This complements the existing write_hashed_state_merged optimization by applying the same sequential I/O pattern to plain state tables: - Accounts: flattened, sorted by address, latest block wins on duplicates - Bytecodes: flattened, sorted by hash, latest block wins - Storage: handles wipe_storage flag (latest wipe invalidates earlier blocks), then flattens slots, sorts by (address, slot), writes only latest value Also extracts write_receipts from write_state so receipts can be written per-block while state changes are batched. Expected impact: reduced I/O contention and improved write locality during block persistence. Amp-Thread-ID: https://ampcode.com/threads/T-019bc2f3-a568-73fe-8a6f-347d6bc9f386 Co-authored-by: Amp <amp@ampcode.com>
d81e9c9
1 day ago
by joshieDo
+0.11%
Merge branch 'main' into joshie/batch-hashed-writes
76fe19f
16 hours ago
by joshieDo
+0.09%
perf(persistence): use parallel sort for batched state writes Replaces k-way merge with flatten + parallel sort (rayon) for write_state_changes_merged. Benchmarks show this approach has lower overhead for typical block counts (10-100 blocks) due to: - Better cache locality from sequential memory access - Rayon's parallel sort scales with CPU cores - Avoids BinaryHeap per-element overhead The k-way merge approach was ~2x slower than flatten+sort for storage writes due to heap operation overhead outweighing the theoretical O(n log k) vs O(n log n) advantage. Also adds microbenchmarks in benches/state_merge.rs to validate performance of different merge strategies.
435e07f
15 hours ago
by gakonst
-0.07%
bench(state_merge): use realistic mainnet data sizes Updated benchmark parameters to simulate real mainnet activity: - Accounts: 500-1000 per block (vs 100 before) - Storage: 50-100 contracts × 20-30 slots per block Results show parallel sort provides significant speedups: - Account merge: ~12% faster at 100k accounts - Storage merge: ~32-37% faster at 50k-300k slots This validates the switch from k-way merge to parallel sort.
a41d853
14 hours ago
by gakonst
+0.12%
bench(state_merge): increase data sizes for heavy mainnet simulation Accounts: 2000-5000 per block (up to 500k total) Storage: 100-200 contracts × 30-50 slots per block (up to 1M slots) Results with heavy workloads show significant parallel sort wins: - 300k slots: 26ms seq → 17ms par (35% faster) - 500k slots: 45ms seq → 28ms par (38% faster) - 1M slots: 124ms seq → 87ms par (30% faster)
23e7012
14 hours ago
by gakonst
-0.22%
refactor(provider): use k-way merge only for hashed state, revert plain state Benchmarks showed the parallel sort for plain state caused regression on small batches (1-10 blocks). This change: - Reverts plain state to per-block `write_state` (original behavior) - Keeps k-way merge for hashed state only (efficient since pre-sorted) - Adds conditional: single block uses sequential write, multiple blocks use k-way merge Benchmark results show 2-10% improvement across all batch sizes. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3adbfe5
8 hours ago
by joshieDo
-0.25%
rm benches
d3950bc
5 hours ago
by joshieDo
+0.28%
cleanup
9d73fe5
4 hours ago
by joshieDo
-0.09%
touch ups
886d5f7
3 hours ago
by joshieDo
+0.11%
Merge branch 'main' into joshie/batch-hashed-writes
120a33c
3 hours ago
by joshieDo
-0.06%
fmt
b6b83e6
3 hours ago
by joshieDo
-0.01%
clippy
9dc2bf3
3 hours ago
by joshieDo
-0.08%
rm docs
326e7eb
3 hours ago
by joshieDo
-0.02%
fix
1ce0a14
3 hours ago
by joshieDo
-0.03%
bruh
f31fad2
1 hour ago
by joshieDo
© 2026 CodSpeed Technology
Home Terms Privacy Docs