36 lines
876 B
Rust
36 lines
876 B
Rust
#[macro_use]
|
|
extern crate criterion;
|
|
|
|
use criterion::*;
|
|
|
|
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.),
|
|
];
|
|
let mut group = c.benchmark_group("sphere");
|
|
for r in rays {
|
|
group.bench_with_input(
|
|
BenchmarkId::new("Sphere", format!("{:?}", r)),
|
|
&r,
|
|
|b, r| b.iter(|| sphere.hit(*r, 0., 1.)),
|
|
);
|
|
}
|
|
group.finish()
|
|
}
|
|
|
|
criterion_group!(benches, criterion_benchmark);
|
|
criterion_main!(benches);
|