mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
dag: fix benches/inprocess_iddag_serde
Summary: Benchmark code is out of sync. Fix it. Example run: benchmarking dag::iddag::IdDag<dag::iddagstore::in_process_store::InProcessStore> serde serializing inprocess iddag with mincode 0.664 ms mincode serialized blob has 707565 bytes deserializing inprocess iddag with mincode 42.477 ms Reviewed By: sfilipco Differential Revision: D26360563 fbshipit-source-id: f87e7ad53e6b6dadecaa0976e1c61f0399814104
This commit is contained in:
parent
7f618a6a9e
commit
46519a3269
@ -8,10 +8,13 @@
|
||||
use tempfile::tempdir;
|
||||
|
||||
use minibench::{bench, elapsed};
|
||||
use nonblocking::non_blocking_result as nbr;
|
||||
|
||||
use dag::idmap::{IdMap, IdMapAssignHead};
|
||||
use dag::{Group, IdDag, InProcessIdDag, VertexName};
|
||||
|
||||
type ParentsFunc<'a> = Box<dyn Fn(VertexName) -> dag::Result<Vec<VertexName>> + Send + Sync + 'a>;
|
||||
|
||||
fn main() {
|
||||
println!(
|
||||
"benchmarking {} serde",
|
||||
@ -20,22 +23,22 @@ fn main() {
|
||||
let parents = bindag::parse_bindag(bindag::MOZILLA);
|
||||
|
||||
let head_name = VertexName::copy_from(format!("{}", parents.len() - 1).as_bytes());
|
||||
let parents_by_name = |name: VertexName| -> dag::Result<Vec<VertexName>> {
|
||||
let i = String::from_utf8(name.as_ref().to_vec())
|
||||
.unwrap()
|
||||
.parse::<usize>()
|
||||
.unwrap();
|
||||
Ok(parents[i]
|
||||
.iter()
|
||||
.map(|p| format!("{}", p).as_bytes().to_vec().into())
|
||||
.collect())
|
||||
};
|
||||
let parents_by_name: ParentsFunc =
|
||||
Box::new(|name: VertexName| -> dag::Result<Vec<VertexName>> {
|
||||
let i = String::from_utf8(name.as_ref().to_vec())
|
||||
.unwrap()
|
||||
.parse::<usize>()
|
||||
.unwrap();
|
||||
Ok(parents[i]
|
||||
.iter()
|
||||
.map(|p| format!("{}", p).as_bytes().to_vec().into())
|
||||
.collect())
|
||||
});
|
||||
|
||||
let id_map_dir = tempdir().unwrap();
|
||||
let mut id_map = IdMap::open(id_map_dir.path()).unwrap();
|
||||
let outcome = id_map
|
||||
.assign_head(head_name.clone(), &parents_by_name, Group::MASTER)
|
||||
.unwrap();
|
||||
let outcome =
|
||||
nbr(id_map.assign_head(head_name.clone(), &parents_by_name, Group::MASTER)).unwrap();
|
||||
let mut iddag = IdDag::new_in_process();
|
||||
iddag
|
||||
.build_segments_volatile_from_prepared_flat_segments(&outcome)
|
||||
|
Loading…
Reference in New Issue
Block a user