Tree hash benches (#486)

* Add initial tree hash benches

* Add tree hash example

* Use lazy static in tree hash benches
This commit is contained in:
Paul Hauner
2019-08-05 18:06:50 +10:00
committed by GitHub
parent 65c18ddc60
commit 4f45bf2255
3 changed files with 97 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
use tree_hash::TreeHash;
use types::test_utils::TestingBeaconStateBuilder;
use types::{BeaconState, EthSpec, MainnetEthSpec};
const TREE_HASH_LOOPS: usize = 1_000;
const VALIDATOR_COUNT: usize = 1_000;
fn build_state<T: EthSpec>(validator_count: usize) -> BeaconState<T> {
let (state, _keypairs) = TestingBeaconStateBuilder::from_default_keypairs_file_if_exists(
validator_count,
&T::default_spec(),
)
.build();
assert_eq!(state.validators.len(), validator_count);
assert_eq!(state.balances.len(), validator_count);
assert!(state.previous_epoch_attestations.is_empty());
assert!(state.current_epoch_attestations.is_empty());
assert!(state.eth1_data_votes.is_empty());
assert!(state.historical_roots.is_empty());
state
}
fn main() {
let state = build_state::<MainnetEthSpec>(VALIDATOR_COUNT);
// This vec is an attempt to ensure the compiler doesn't optimize-out the hashing.
let mut vec = Vec::with_capacity(TREE_HASH_LOOPS);
for _ in 0..TREE_HASH_LOOPS {
let root = state.tree_hash_root();
vec.push(root[0]);
}
}