liteboxfs 0.2.0

A modern POSIX filesystem in a SQLite database
Documentation
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);