#[macro_use] extern crate criterion; use criterion::{Criterion, ParameterizedBenchmark}; use renderer::{ hitable::Hit, material::Lambertian, ray::Ray, sphere::Sphere, texture::ConstantTexture, vec3::Vec3, }; fn criterion_benchmark(c: &mut Criterion) { let sphere = Sphere::new( Vec3::new(0., 0., 0.), 1., Lambertian::new(ConstantTexture::new([1., 0., 0.])), ); let rays = vec![ // Hit Ray::new([0., 0., -2.], [0., 0., 1.], 0.), // Miss Ray::new([0., 0., -2.], [0., 0., -1.], 0.), ]; c.bench( "sphere", ParameterizedBenchmark::new( "Sphere", move |b, r| b.iter(|| sphere.hit(*r, 0., 1.)), rays, ), ); } criterion_group!(benches, criterion_benchmark); criterion_main!(benches);