blob: 85a845636855083ec35d6dbe0dde95b3e39bf250 [file] [log] [blame]
use constant_time_eq::{constant_time_eq, constant_time_eq_n};
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
fn bench_array(c: &mut Criterion) {
let mut group = c.benchmark_group("constant_time_eq_n");
let input = (&[1; 16], &[2; 16]);
group.throughput(Throughput::Bytes(16));
group.bench_with_input(BenchmarkId::from_parameter(16), &input, |b, &(x, y)| {
b.iter(|| constant_time_eq_n(x, y))
});
let input = (&[1; 20], &[2; 20]);
group.throughput(Throughput::Bytes(20));
group.bench_with_input(BenchmarkId::from_parameter(20), &input, |b, &(x, y)| {
b.iter(|| constant_time_eq_n(x, y))
});
let input = (&[1; 32], &[2; 32]);
group.throughput(Throughput::Bytes(32));
group.bench_with_input(BenchmarkId::from_parameter(32), &input, |b, &(x, y)| {
b.iter(|| constant_time_eq_n(x, y))
});
let input = (&[1; 64], &[2; 64]);
group.throughput(Throughput::Bytes(64));
group.bench_with_input(BenchmarkId::from_parameter(64), &input, |b, &(x, y)| {
b.iter(|| constant_time_eq_n(x, y))
});
group.finish();
}
fn bench_slice(c: &mut Criterion) {
let mut group = c.benchmark_group("constant_time_eq");
let input = (&[1; 65536], &[2; 65536]);
for &size in &[16, 20, 32, 64, 4 * 1024, 16 * 1024, 64 * 1024] {
let input = (&input.0[..size], &input.1[..size]);
group.throughput(Throughput::Bytes(size as u64));
group.bench_with_input(BenchmarkId::from_parameter(size), &input, |b, &(x, y)| {
b.iter(|| constant_time_eq(x, y))
});
}
group.finish();
}
criterion_group!(benches, bench_array, bench_slice);
criterion_main!(benches);