in math/benches/fft.rs [17:54]
fn fft_evaluate_poly<B, E>(c: &mut Criterion, field_name: &str)
where
B: StarkField,
E: FieldElement<BaseField = B>,
{
let mut group = c.benchmark_group(format!("{}/fft_evaluate_poly", field_name));
group.sample_size(10);
group.measurement_time(Duration::from_secs(10));
let blowup_factor = 8;
for &size in SIZES.iter() {
let p: Vec<E> = rand_vector(size / blowup_factor);
let twiddles: Vec<B> = fft::get_twiddles(size);
group.bench_function(BenchmarkId::new("simple", size), |bench| {
bench.iter_with_large_drop(|| {
let mut result = vec![E::ZERO; size];
result[..p.len()].copy_from_slice(&p);
fft::evaluate_poly(&mut result, &twiddles);
result
});
});
}
for &size in SIZES.iter() {
let p: Vec<E> = rand_vector(size / blowup_factor);
let twiddles: Vec<B> = fft::get_twiddles(size / blowup_factor);
group.bench_function(BenchmarkId::new("with_offset", size), |bench| {
bench.iter_with_large_drop(|| {
let result =
fft::evaluate_poly_with_offset(&p, &twiddles, B::GENERATOR, blowup_factor);
result
});
});
}
group.finish();
}