123456789101112131415161718192021222324252627 |
- use criterion::{black_box, criterion_group, criterion_main, Criterion};
- use rand::Rng;
- use spiral_rs::aligned_memory::*;
- use spiral_rs::ntt::*;
- use spiral_rs::util::*;
- fn criterion_benchmark(c: &mut Criterion) {
- let params = get_test_params();
- let mut v1 = AlignedMemory64::new(params.crt_count * params.poly_len);
- let mut rng = rand::thread_rng();
- for i in 0..params.crt_count {
- for j in 0..params.poly_len {
- let idx = calc_index(&[i, j], &[params.crt_count, params.poly_len]);
- let val: u64 = rng.gen();
- v1[idx] = val % params.moduli[i];
- }
- }
- c.bench_function("nttf 2048", |b| {
- b.iter(|| ntt_forward(black_box(¶ms), black_box(v1.as_mut_slice())))
- });
- c.bench_function("ntti 2048", |b| {
- b.iter(|| ntt_inverse(black_box(¶ms), black_box(v1.as_mut_slice())))
- });
- }
- criterion_group!(benches, criterion_benchmark);
- criterion_main!(benches);
|