use fast_able::statis::Statis;
use fast_able::SyncHashMap;
use std::sync::Arc;
use std::time::Duration;
#[test]
fn test_iter() {
let rw = SyncHashMap::new();
rw.insert(1, 1);
assert_eq!(rw.len(), 1);
for i in 0..10000_0000 {
rw.insert(i, i + 1);
RECKON_BY_SEC.add();
}
for ele in rw.iter() {
println!("{:?}", ele);
}
for ele in rw.iter().rev() {
println!("{:?}", ele);
}
rt1.join();
rt2.join();
}
pub static RECKON_BY_SEC: once_cell::sync::Lazy<Statis> =
once_cell::sync::Lazy::new(|| Statis::new(|v| println!("one sec run sum: {v}")));
#[test]
fn bench_insert_mul_thread() {
let rw = Arc::new(SyncHashMap::new());
rw.insert(1, 1);
assert_eq!(rw.len(), 1);
let rw2 = rw.clone();
let rt1 = std::thread::spawn(move || {
for i in 0..10000_0000 {
rw2.insert(i, i + 1);
RECKON_BY_SEC.add();
}
});
let rw2 = rw.clone();
let rt2 = std::thread::spawn(move || {
for i in 10000_0000..20000_0000 {
rw2.insert(i, i + 1);
RECKON_BY_SEC.add();
}
});
let rw2 = rw.clone();
let rt3 = std::thread::spawn(move || {
for i in 20000_0000..30000_0000 {
rw2.insert(i, i + 1);
RECKON_BY_SEC.add();
}
});
rt1.join();
rt2.join();
}
#[test]
fn bench_insert_one_thread() {
let rw = Arc::new(SyncHashMap::new());
rw.insert(1, 1);
assert_eq!(rw.len(), 1);
let rw2 = rw.clone();
let rt1 = std::thread::spawn(move || {
for i in 0..10000_0000 {
rw2.insert(i, i + 1);
RECKON_BY_SEC.add();
}
});
rt1.join();
}