35 lines
825 B
Rust
35 lines
825 B
Rust
#[macro_use]
|
|
extern crate criterion;
|
|
|
|
use criterion::{Criterion, ParameterizedBenchmark};
|
|
|
|
use rtiow::{
|
|
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);
|