From 1779204c9d0939a3e15e3b27b706cccb614e543a Mon Sep 17 00:00:00 2001 From: antiochp <30642645+antiochp@users.noreply.github.com> Date: Tue, 19 Feb 2019 17:01:21 +0000 Subject: [PATCH] log timing for rebuild_index --- chain/src/txhashset/txhashset.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/chain/src/txhashset/txhashset.rs b/chain/src/txhashset/txhashset.rs index 4805b2c33d..1acf4b98de 100644 --- a/chain/src/txhashset/txhashset.rs +++ b/chain/src/txhashset/txhashset.rs @@ -1252,18 +1252,29 @@ impl<'a> Extension<'a> { Ok((output_sum, kernel_sum)) } - /// Rebuild the index of MMR positions to the corresponding Output and - /// kernel by iterating over the whole MMR data. This is a costly operation - /// performed only when we receive a full new chain state. + /// Rebuild the index of MMR positions to the corresponding UTXOs. + /// This is a costly operation performed only when we receive a full new chain state. pub fn rebuild_index(&self) -> Result<(), Error> { + let now = Instant::now(); + + let mut count = 0; + for n in 1..self.output_pmmr.unpruned_size() + 1 { // non-pruned leaves only if pmmr::bintree_postorder_height(n) == 0 { if let Some(out) = self.output_pmmr.get_data(n) { self.batch.save_output_pos(&out.commit, n)?; + count += 1; } } } + + debug!( + "txhashset: rebuild_index ({} UTXOs), took {}s", + count, + now.elapsed().as_secs(), + ); + Ok(()) }