Use rustc-hash in participation cache

This commit is contained in:
Michael Sproul
2022-02-17 17:32:40 +11:00
parent c88fcfed2b
commit 0b171cf097
3 changed files with 13 additions and 5 deletions

View File

@@ -25,6 +25,7 @@ smallvec = "1.6.1"
arbitrary = { version = "1.0", features = ["derive"], optional = true }
lighthouse_metrics = { path = "../../common/lighthouse_metrics", optional = true }
lazy_static = { version = "1.4.0", optional = true }
rustc-hash = "1.1.0"
[features]
default = ["legacy-arith", "metrics"]

View File

@@ -11,8 +11,8 @@
//! Additionally, this cache is returned from the `altair::process_epoch` function and can be used
//! to get useful summaries about the validator participation in an epoch.
use rustc_hash::FxHashMap as HashMap;
use safe_arith::{ArithError, SafeArith};
use std::collections::HashMap;
use types::{
consts::altair::{
NUM_FLAG_INDICES, TIMELY_HEAD_FLAG_INDEX, TIMELY_SOURCE_FLAG_INDEX,
@@ -82,7 +82,10 @@ impl SingleEpochParticipationCache {
let zero_balance = Balance::zero(spec.effective_balance_increment);
Self {
unslashed_participating_indices: HashMap::with_capacity(hashmap_len),
unslashed_participating_indices: HashMap::with_capacity_and_hasher(
hashmap_len,
Default::default(),
),
total_flag_balances: [zero_balance; NUM_FLAG_INDICES],
total_active_balance: zero_balance,
}
@@ -200,7 +203,8 @@ impl ParticipationCache {
let mut previous_epoch_participation =
SingleEpochParticipationCache::new(num_previous_epoch_active_vals, spec);
let mut effective_balances = HashMap::with_capacity(num_current_epoch_active_vals);
let mut effective_balances =
HashMap::with_capacity_and_hasher(num_current_epoch_active_vals, Default::default());
// Contains the set of validators which are either:
//

View File

@@ -2,7 +2,8 @@ use clap::ArgMatches;
use eth2_network_config::Eth2NetworkConfig;
use ssz::Encode;
use state_processing::{
per_block_processing, per_slot_processing, BlockSignatureStrategy, VerifyBlockRoot,
per_block_processing, per_slot_processing, BlockSignatureStrategy, ConsensusContext,
VerifyBlockRoot,
};
use std::fs::File;
use std::io::prelude::*;
@@ -94,12 +95,14 @@ fn do_transition<T: EthSpec>(
.map_err(|e| format!("Unable to build caches: {:?}", e))?;
let t = std::time::Instant::now();
let mut ctxt =
ConsensusContext::new(block.slot()).set_proposer_index(block.message().proposer_index());
per_block_processing(
&mut pre_state,
&block,
None,
BlockSignatureStrategy::NoVerification,
VerifyBlockRoot::True,
&mut ctxt,
spec,
)
.map_err(|e| format!("State transition failed: {:?}", e))?;