From 587be831b57528eb016b1c66c0e3eb8679c74f04 Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Wed, 13 Mar 2019 16:49:32 +1100 Subject: [PATCH] Add method for dropping pubkey cache. Add bench. --- .../benches/bench_block_processing.rs | 17 +++++++++++++++++ eth2/types/src/beacon_state.rs | 5 +++++ 2 files changed, 22 insertions(+) diff --git a/eth2/state_processing/benches/bench_block_processing.rs b/eth2/state_processing/benches/bench_block_processing.rs index 031942473..128b1051b 100644 --- a/eth2/state_processing/benches/bench_block_processing.rs +++ b/eth2/state_processing/benches/bench_block_processing.rs @@ -426,6 +426,23 @@ fn bench_block_processing( .sample_size(10), ); + let mut state = initial_state.clone(); + state.drop_pubkey_cache(); + c.bench( + &format!("{}/block_processing", desc), + Benchmark::new("build_pubkey_cache", move |b| { + b.iter_batched( + || state.clone(), + |mut state| { + state.update_pubkey_cache().unwrap(); + state + }, + criterion::BatchSize::SmallInput, + ) + }) + .sample_size(10), + ); + let block = initial_block.clone(); c.bench( &format!("{}/block_processing", desc), diff --git a/eth2/types/src/beacon_state.rs b/eth2/types/src/beacon_state.rs index fc410fe64..a1dd8983c 100644 --- a/eth2/types/src/beacon_state.rs +++ b/eth2/types/src/beacon_state.rs @@ -322,6 +322,11 @@ impl BeaconState { Ok(()) } + /// Completely drops the `pubkey_cache`, replacing it with a new, empty cache. + pub fn drop_pubkey_cache(&mut self) { + self.pubkey_cache = PubkeyCache::empty() + } + /// If a validator pubkey exists in the validator registry, returns `Some(i)`, otherwise /// returns `None`. ///