Skip to content

Instantly share code, notes, and snippets.

@kushti
Created October 6, 2016 20:21
Show Gist options
  • Save kushti/1c57fab6ccbfcbd902e99ce26bc0896e to your computer and use it in GitHub Desktop.
Save kushti/1c57fab6ccbfcbd902e99ce26bc0896e to your computer and use it in GitHub Desktop.
extern crate ethcore_util;
#[macro_use] extern crate log;
extern crate time;
use time::PreciseTime;
use ethcore_util::hash::*;
use ethcore_util::bytes::*;
use ethcore_util::trie::*;
use ethcore_util::memorydb::*;
use ethcore_util::overlaydb::*;
use ethcore_util::triehash::*;
use ethcore_util::sha3::*;
fn random_value(seed: &mut H256) -> Bytes {
*seed = seed.sha3();
match seed[0] % 2 {
1 => vec![seed[31];1],
_ => seed.to_vec(),
}
}
fn random_8_bytes(seed: &mut H256) -> Vec<u8> {
*seed = seed.sha3();
seed[0..8].to_vec()
}
fn trie(steps: u32, leafs: u32) {
//let mut memdb = OverlayDB::new_temp();
let mut memdb = MemoryDB::new();
let mut root = H256::new();
let mut t = TrieDBMut::new(&mut memdb, &mut root);
let mut seed = H256::new();
for tcnt in 0..steps {
let start = PreciseTime::now();
for cnt in 0..leafs {
let k = random_value(&mut seed);
let v = random_8_bytes(&mut seed);
t.insert(&k, &v).unwrap();
}
let end = PreciseTime::now();
println!("leafs: {}, time: {}s", leafs * (tcnt + 1), start.to(end));
}
}
fn main() {
trie(100000, 1000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment