2019-05-30 21:31:35 -07:00
|
|
|
#![feature(test)]
|
|
|
|
|
|
|
|
extern crate test;
|
|
|
|
|
|
|
|
use bincode::serialize;
|
|
|
|
use solana_runtime::status_cache::*;
|
2020-01-28 17:03:20 -08:00
|
|
|
use solana_sdk::{
|
|
|
|
hash::{hash, Hash},
|
|
|
|
signature::Signature,
|
|
|
|
};
|
2019-05-30 21:31:35 -07:00
|
|
|
use test::Bencher;
|
|
|
|
|
|
|
|
type BankStatusCache = StatusCache<()>;
|
|
|
|
|
|
|
|
#[bench]
|
|
|
|
fn test_statuscache_serialize(bencher: &mut Bencher) {
|
|
|
|
let mut status_cache = BankStatusCache::default();
|
|
|
|
status_cache.add_root(0);
|
|
|
|
status_cache.clear_signatures();
|
|
|
|
for hash_index in 0..100 {
|
|
|
|
let blockhash = Hash::new(&vec![hash_index; std::mem::size_of::<Hash>()]);
|
|
|
|
let mut id = blockhash;
|
|
|
|
for _ in 0..100 {
|
|
|
|
id = hash(id.as_ref());
|
|
|
|
let mut sigbytes = Vec::from(id.as_ref());
|
|
|
|
id = hash(id.as_ref());
|
|
|
|
sigbytes.extend(id.as_ref());
|
|
|
|
let sig = Signature::new(&sigbytes);
|
|
|
|
status_cache.insert(&blockhash, &sig, 0, ());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bencher.iter(|| {
|
2020-06-08 17:38:14 -07:00
|
|
|
let _ = serialize(&status_cache.slot_deltas(&[0])).unwrap();
|
2019-05-30 21:31:35 -07:00
|
|
|
});
|
|
|
|
}
|