all benchmarks

main
Ziyang Hu 2 years ago
parent 091cd289c2
commit 5eb8cf5bcb

@ -76,9 +76,6 @@ lazy_static! {
return db
}
// NODE_PATTERN = re.compile(r'CREATE \(:User {id: (\d+), completion_percentage: (\d+), gender: "(\w+)", age: (\d+)}\);')
// NODE_PARTIAL_PATTERN = re.compile(r'CREATE \(:User {id: (\d+), completion_percentage: (\d+)}\);')
// EDGE_PATTERN = re.compile(r'MATCH \(n:User {id: (\d+)}\), \(m:User {id: (\d+)}\) CREATE \(n\)-\[e: Friend\]->\(m\);')
let node_re = Regex::new(r#"CREATE \(:User \{id: (\d+), completion_percentage: (\d+), gender: "(\w+)", age: (\d+)}\);"#).unwrap();
let node_partial_re =
Regex::new(r#"CREATE \(:User \{id: (\d+), completion_percentage: (\d+)}\);"#).unwrap();

@ -0,0 +1,78 @@
/*
* 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 std::collections::BTreeMap;
use std::fs::File;
use std::io::BufRead;
use std::path::PathBuf;
use std::time::Instant;
use std::{env, io};
use test::Bencher;
use lazy_static::{initialize, lazy_static};
use serde_json::json;
use cozo::{DbInstance, NamedRows};
lazy_static! {
static ref TEST_DB: DbInstance = {
let data_dir = PathBuf::from(env::var("COZO_BENCH_WIKI_DIR").unwrap());
let db = DbInstance::new("mem", "", "").unwrap();
let mut file_path = data_dir.clone();
file_path.push("wikipedia-articles.el");
// dbg!(&db_kind);
// dbg!(&data_dir);
// dbg!(&file_path);
// dbg!(&data_size);
// dbg!(&n_threads);
db.run_script(":create article {fr: Int, to: Int}",
Default::default(),
).unwrap();
let file = File::open(&file_path).unwrap();
let mut articles = vec![];
let import_time = Instant::now();
for line in io::BufReader::new(file).lines() {
let line = line.unwrap();
if line.len() < 2 {
continue
}
let mut splits = line.split_whitespace();
let fr = splits.next().unwrap();
let to = splits.next().unwrap();
articles.push(vec![json!(fr.parse::<i32>().unwrap()), json!(to.parse::<i32>().unwrap())])
}
db.import_relations(BTreeMap::from([("article".to_string(), NamedRows {
headers: vec![
"fr".to_string(),
"to".to_string(),
],
rows: articles,
})])).unwrap();
dbg!(import_time.elapsed());
db
};
}
#[bench]
fn wikipedia_pagerank(b: &mut Bencher) {
initialize(&TEST_DB);
b.iter(|| {
TEST_DB
.run_script("?[id, rank] <~ PageRank(*article[])", Default::default())
.unwrap()
});
}
Loading…
Cancel
Save