1
use bonsaidb::core::arc_bytes::serde::Bytes;
2
use criterion::{Criterion, Throughput};
3
use serde::{Deserialize, Serialize};
4

            
5
mod bonsai;
6
#[cfg(feature = "sqlite")]
7
mod rusqlite;
8

            
9
5
#[derive(Serialize, Deserialize, Debug)]
10
struct ResizableDocument {
11
    data: Bytes,
12
}
13

            
14
1
pub fn save_documents(c: &mut Criterion) {
15
1
    static KB: usize = 1024;
16
1

            
17
1
    // First set of benchmarks tests inserting documents
18
1
    let mut group = c.benchmark_group("save_documents");
19
5
    for size in [KB, 2 * KB, 8 * KB, 32 * KB, KB * KB] {
20
5
        group.throughput(Throughput::Bytes(size as u64));
21
5
        let mut data = Vec::with_capacity(size);
22
1092608
        data.resize_with(size, || 7u8);
23
5
        let doc = ResizableDocument {
24
5
            data: Bytes::from(data),
25
5
        };
26
5

            
27
5
        bonsai::save_documents(&mut group, &doc);
28
5
        #[cfg(feature = "sqlite")]
29
5
        rusqlite::save_documents(&mut group, &doc);
30
5
    }
31
1
    group.finish();
32
1
}