aboutsummaryrefslogtreecommitdiff
path: root/benches/zears.rs
blob: 8ea78bab23834dd116c122b86d8b36ed620a3e92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use criterion::{BenchmarkId, Criterion, Throughput, criterion_group, criterion_main};

use zears::Aez;

fn bench(c: &mut Criterion) {
    let mut group = c.benchmark_group("zears");

    const KB: usize = 1024;
    let aez = Aez::new(&[0u8; 48]);

    for size in [KB, 2 * KB, 4 * KB, 8 * KB, 16 * KB].into_iter() {
        let buf = vec![0u8; size];

        group.throughput(Throughput::Bytes(size as u64));

        group.bench_function(BenchmarkId::new("encrypt_buffer", size), |b| {
            let mut out = vec![0u8; size + 16];
            b.iter(|| aez.encrypt_buffer(&[0], &[], &buf, &mut out))
        });

        group.bench_function(BenchmarkId::new("encrypt_inplace", size), |b| {
            let mut out = vec![0u8; size];
            b.iter(|| aez.encrypt_inplace(&[0], &[], 16, &mut out))
        });

        let buf = aez.encrypt(&[0], &[], 16, &buf);

        group.bench_function(BenchmarkId::new("decrypt", size), |b| {
            b.iter(|| aez.decrypt(&[0], &[], 16, &buf).unwrap());
        });
    }

    group.finish();
}

criterion_group!(benches, bench);
criterion_main!(benches);