mod common;
use std::time::{Duration, Instant};
use criterion::{
BenchmarkGroup, Criterion, criterion_group, criterion_main, measurement::WallTime,
};
use liteboxfs::{Connection, CreateOptions, FileKind, Owner};
fn mkdir_single(group: &mut BenchmarkGroup<'_, WallTime>, mut conn: Connection) {
group.bench_function("single regular file", |b| {
b.iter_custom(|iters| {
let mut total = Duration::from_secs(0);
for _ in 0..iters {
let mut tx = conn.tx().unwrap();
let mut fs = tx.fs().unwrap();
let start = Instant::now();
fs.create("/test.txt", FileKind::Regular, Owner::ROOT)
.unwrap();
total += start.elapsed();
drop(fs);
tx.rollback().unwrap();
}
total
});
});
}
fn mkdir_in_memory(c: &mut Criterion) {
let mut group = c.benchmark_group("create file (in-memory)");
let conn = Connection::open_in_memory(&CreateOptions::default()).unwrap();
mkdir_single(&mut group, conn);
group.finish();
}
criterion_group!(mkdir, mkdir_in_memory);
criterion_main!(mkdir);