Skip to content
This repository has been archived by the owner on Nov 6, 2020. It is now read-only.

Write queue to speed-up db ipc #1160

Merged
merged 13 commits into from
May 28, 2016
20 changes: 20 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ ethcore-db = { path = "db" }
ethcore-ipc-hypervisor = { path = "ipc/hypervisor" }
crossbeam = "0.2"
ansi_term = "0.7"
schedule_recv = "0.1"
scoped_threadpool = "0.1"

[dependencies.hyper]
version = "0.8"
Expand Down
29 changes: 29 additions & 0 deletions db/benches/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,32 @@ fn key_write_direct(bencher: &mut Bencher) {
client.put(devtools::random_str(2048).as_bytes(), devtools::random_str(2048).as_bytes()).unwrap();
});
}

#[bench]
fn key_write_read_ipc(bencher: &mut Bencher) {
crossbeam::scope(|scope| {
let stop = devtools::StopGuard::new();
let temp = devtools::RandomTempPath::create_dir();
let ipc_url = ethcore_db::extras_service_url(temp.as_str()).unwrap();
ethcore_db::run_worker(&scope, stop.share(), &ipc_url);
let client = nanoipc::init_client::<DatabaseClient<_>>(&ipc_url).unwrap();
client.open_default(temp.as_str().to_owned()).unwrap();
bencher.iter(|| {
let mut batch = Vec::new();
for _ in 0..100 {
batch.push((devtools::random_str(256).as_bytes().to_vec(), devtools::random_str(256).as_bytes().to_vec()));
batch.push((devtools::random_str(256).as_bytes().to_vec(), devtools::random_str(2048).as_bytes().to_vec()));
batch.push((devtools::random_str(2048).as_bytes().to_vec(), devtools::random_str(2048).as_bytes().to_vec()));
batch.push((devtools::random_str(2048).as_bytes().to_vec(), devtools::random_str(256).as_bytes().to_vec()));
}

for &(ref k, ref v) in batch.iter() {
client.put(k, v).unwrap();
}

for &(ref k, ref v) in batch.iter() {
assert_eq!(v, &client.get(k).unwrap().unwrap());
}
});
});
}
Loading