time travel bench

main
Ziyang Hu 2 years ago
parent 56ab50126b
commit 42f5946539

@ -0,0 +1,93 @@
/*
* Copyright 2022, The Cozo Project Authors.
*
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file,
* You can obtain one at https://mozilla.org/MPL/2.0/.
*
*/
#![feature(test)]
extern crate test;
use cozo::{DbInstance, NamedRows};
use itertools::Itertools;
use lazy_static::{initialize, lazy_static};
use serde_json::json;
use std::collections::BTreeMap;
use test::Bencher;
fn insert_data(db: &DbInstance) {
let mut to_import = BTreeMap::new();
to_import.insert(
"plain".to_string(),
NamedRows {
headers: vec!["k".to_string(), "v".to_string()],
rows: (0..10000).map(|i| vec![json!(i), json!(i)]).collect_vec(),
},
);
to_import.insert(
"tt1".to_string(),
NamedRows {
headers: vec!["k".to_string(), "vld".to_string(), "v".to_string()],
rows: (0..10000)
.map(|i| vec![json!(i), json!([0, true]), json!(i)])
.collect_vec(),
},
);
to_import.insert(
"tt100".to_string(),
NamedRows {
headers: vec!["k".to_string(), "vld".to_string(), "v".to_string()],
rows: (0..10000)
.flat_map(|i| (0..100).map(move |vld| vec![json!(i), json!([vld, true]), json!(i)]))
.collect_vec(),
},
);
to_import.insert(
"tt10000".to_string(),
NamedRows {
headers: vec!["k".to_string(), "vld".to_string(), "v".to_string()],
rows: (0..10000)
.flat_map(|i| {
(0..10000).map(move |vld| vec![json!(i), json!([vld, true]), json!(i)])
})
.collect_vec(),
},
);
db.import_relations(to_import).unwrap();
}
lazy_static! {
static ref TEST_DB: DbInstance = {
let db_path = "_time_travel_rocks.db";
let db = DbInstance::new("rocksdb", db_path, "").unwrap();
let create_res = db.run_script(
r#"
{:create plain {k: Int => v}}
{:create tt1 {k: Int, vld: Validity => v}}
{:create tt100 {k: Int, vld: Validity => v}}
{:create tt10000 {k: Int, vld: Validity => v}}
"#,
Default::default(),
);
if create_res.is_ok() {
insert_data(&db);
} else {
println!("database already exists, skip import");
}
db
};
}
#[bench]
fn time_travel_init(_: &mut Bencher) {
initialize(&TEST_DB);
}

@ -1,3 +1,12 @@
/*
* Copyright 2022, The Cozo Project Authors.
*
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file,
* You can obtain one at https://mozilla.org/MPL/2.0/.
*
*/
use crate::DbInstance;
use serde_json::json;
use std::env;

Loading…
Cancel
Save