bulk insert and benchmarks

This commit is contained in:
Elijah McMorris 2024-01-15 22:17:25 -08:00
parent dc85c7d997
commit 82edfdfbd3
Signed by: NexVeridian
SSH key fingerprint: SHA256:bsA1SKZxuEcEVHAy3gY1HUeM5ykRJl0U0kQHQn0hMg8
12 changed files with 289 additions and 54 deletions

79
benches/bench.rs Normal file
View file

@ -0,0 +1,79 @@
use anyhow::{Error, Ok, Result};
use criterion::{criterion_group, criterion_main, Criterion};
use std::{env, time::Duration};
use surrealdb::{
engine::local::{Db, Mem},
Surreal,
};
use tokio::runtime::Runtime;
use wikidata_to_surrealdb::utils::*;
async fn inti_db() -> Result<Surreal<Db>, Error> {
env::set_var("WIKIDATA_LANG", "en");
env::set_var("OVERWRITE_DB", "true");
let db = Surreal::new::<Mem>(()).await?;
db.use_ns("wikidata").use_db("wikidata").await?;
Ok(db)
}
fn bench(c: &mut Criterion) {
let mut group = c.benchmark_group("Create DB Entities");
group.bench_function("Single Insert", |b| {
b.iter(|| {
let rt = Runtime::new().unwrap();
rt.block_on(async {
let db = inti_db().await.unwrap();
let reader = File_Format::new("json")
.reader("tests/data/bench.json")
.unwrap();
create_db_entities_threaded(
Some(db.clone()),
reader,
None,
1000,
100,
CreateVersion::Single,
)
.await
.unwrap();
})
})
});
group.bench_function("Bulk Insert", |b| {
b.iter(|| {
let rt = Runtime::new().unwrap();
rt.block_on(async {
let db = inti_db().await.unwrap();
let reader = File_Format::new("json")
.reader("tests/data/bench.json")
.unwrap();
create_db_entities_threaded(
Some(db.clone()),
reader,
None,
1000,
100,
CreateVersion::Bulk,
)
.await
.unwrap();
})
})
});
group.finish();
}
criterion_group! {
name = benches;
config = Criterion::default().measurement_time(Duration::from_secs(60));
targets= bench
}
criterion_main!(benches);