82 lines
2.1 KiB
Rust
82 lines
2.1 KiB
Rust
#![feature(test)]
|
|
|
|
extern crate solana_core;
|
|
extern crate test;
|
|
|
|
use {
|
|
solana_core::{
|
|
consensus::Tower, tower_storage::FileTowerStorage, vote_simulator::VoteSimulator,
|
|
},
|
|
solana_runtime::{bank::Bank, bank_forks::BankForks},
|
|
solana_sdk::{
|
|
pubkey::Pubkey,
|
|
signature::{Keypair, Signer},
|
|
},
|
|
std::{
|
|
collections::{HashMap, HashSet},
|
|
sync::Arc,
|
|
},
|
|
tempfile::TempDir,
|
|
test::Bencher,
|
|
trees::tr,
|
|
};
|
|
|
|
#[bench]
|
|
fn bench_save_tower(bench: &mut Bencher) {
|
|
let dir = TempDir::new().unwrap();
|
|
|
|
let vote_account_pubkey = &Pubkey::default();
|
|
let node_keypair = Arc::new(Keypair::new());
|
|
let heaviest_bank = BankForks::new(Bank::default_for_tests()).working_bank();
|
|
let tower_storage = FileTowerStorage::new(dir.path().to_path_buf());
|
|
let tower = Tower::new(
|
|
&node_keypair.pubkey(),
|
|
vote_account_pubkey,
|
|
0,
|
|
&heaviest_bank,
|
|
);
|
|
|
|
bench.iter(move || {
|
|
tower.save(&tower_storage, &node_keypair).unwrap();
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
#[ignore]
|
|
fn bench_generate_ancestors_descendants(bench: &mut Bencher) {
|
|
let vote_account_pubkey = &Pubkey::default();
|
|
let node_keypair = Arc::new(Keypair::new());
|
|
let heaviest_bank = BankForks::new(Bank::default_for_tests()).working_bank();
|
|
let mut tower = Tower::new(
|
|
&node_keypair.pubkey(),
|
|
vote_account_pubkey,
|
|
0,
|
|
&heaviest_bank,
|
|
);
|
|
|
|
let num_banks = 500;
|
|
let forks = tr(0);
|
|
let mut vote_simulator = VoteSimulator::new(2);
|
|
vote_simulator.fill_bank_forks(forks, &HashMap::new(), true);
|
|
vote_simulator.create_and_vote_new_branch(
|
|
0,
|
|
num_banks,
|
|
&HashMap::new(),
|
|
&HashSet::new(),
|
|
&Pubkey::new_unique(),
|
|
&mut tower,
|
|
);
|
|
|
|
bench.iter(move || {
|
|
for _ in 0..num_banks {
|
|
let _ancestors = vote_simulator.bank_forks.read().unwrap().ancestors();
|
|
let _descendants = vote_simulator
|
|
.bank_forks
|
|
.read()
|
|
.unwrap()
|
|
.descendants()
|
|
.clone();
|
|
}
|
|
});
|
|
}
|