mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-02-19 03:04:27 -05:00
perf(db): flatten HashedPostState before persisting (#21422)
This commit is contained in:
committed by
GitHub
parent
adecbd7814
commit
71ed68e944
@@ -630,27 +630,27 @@ impl<TX: DbTx + DbTxMut + 'static, N: NodeTypesForProvider> DatabaseProvider<TX,
|
||||
},
|
||||
)?;
|
||||
timings.write_state += start.elapsed();
|
||||
|
||||
let trie_data = block.trie_data();
|
||||
|
||||
// insert hashes and intermediate merkle nodes
|
||||
let start = Instant::now();
|
||||
self.write_hashed_state(&trie_data.hashed_state)?;
|
||||
timings.write_hashed_state += start.elapsed();
|
||||
}
|
||||
}
|
||||
|
||||
// Write all trie updates in a single batch.
|
||||
// Write all hashed state and trie updates in single batches.
|
||||
// This reduces cursor open/close overhead from N calls to 1.
|
||||
if save_mode.with_state() {
|
||||
let start = Instant::now();
|
||||
|
||||
// Blocks are oldest-to-newest, merge_batch expects newest-to-oldest.
|
||||
let merged =
|
||||
TrieUpdatesSorted::merge_batch(blocks.iter().rev().map(|b| b.trie_updates()));
|
||||
let start = Instant::now();
|
||||
let merged_hashed_state = HashedPostStateSorted::merge_batch(
|
||||
blocks.iter().rev().map(|b| b.trie_data().hashed_state),
|
||||
);
|
||||
if !merged_hashed_state.is_empty() {
|
||||
self.write_hashed_state(&merged_hashed_state)?;
|
||||
}
|
||||
timings.write_hashed_state += start.elapsed();
|
||||
|
||||
if !merged.is_empty() {
|
||||
self.write_trie_updates_sorted(&merged)?;
|
||||
let start = Instant::now();
|
||||
let merged_trie =
|
||||
TrieUpdatesSorted::merge_batch(blocks.iter().rev().map(|b| b.trie_updates()));
|
||||
if !merged_trie.is_empty() {
|
||||
self.write_trie_updates_sorted(&merged_trie)?;
|
||||
}
|
||||
timings.write_trie_updates += start.elapsed();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user