extern crate ids_service;
extern crate simplelog;
use crate::ids_service::crypto_hash::*;
use crate::ids_service::common::*;
use crate::simplelog::*;
use std::time::Instant;
use log::*;
fn main() {
const NUMBER_OF_ITEMS : usize = 10_000_000;
info!("Number of CPU's={}",num_cpus::get());
let _ = SimpleLogger::init(LevelFilter::Info, Config::default());
let start = Instant::now();
let mut ids = IdsService::new(NUMBER_OF_ITEMS/10, Sha3Mode::Sha3_512,Some(num_cpus::get() * 4 as usize));
ids.start();
let _ = ids.filled_at_percent_event(10).recv().is_ok();
for i in 0..NUMBER_OF_ITEMS {
let id : String = ids.get_id().as_hex();
if id.len() != 128 {
warn!("Id not valid. {}", id);
}
if i%(NUMBER_OF_ITEMS/100) == 0 {
info!("Number of items get {}, cache size {}, in {:?}", i,ids.get_cache_len(),start.elapsed());
}
}
let duration = start.elapsed().as_secs();
info!("Cache size {}. Operation duration: {}s, throughput {} ids/s ",ids.get_cache_len(),duration, NUMBER_OF_ITEMS as u64/duration);
ids.stop();
}