glam 0.5.1

A simple and fast 3D math library for games and graphics
Documentation
#[path = "support/macros.rs"]
#[macro_use]
mod macros;
mod support;

use criterion::{criterion_group, criterion_main, Criterion};
use glam::f32::{TransformRT, TransformSRT, Vec3};
use rand::{Rng, SeedableRng};
use rand_xoshiro::Xoshiro256Plus;
use std::ops::Mul;
use support::*;

fn random_transform_srt<R>(rng: &mut R) -> TransformSRT
where
    R: Rng,
{
    rng.gen()
}

fn random_transform_rt<R>(rng: &mut R) -> TransformRT
where
    R: Rng,
{
    rng.gen()
}

bench_unop!(
    transform_srt_inverse,
    "transform_srt inverse",
    op => inverse,
    ty => TransformSRT,
    from => random_transform_srt
);

bench_binop!(
    vec3_mul_transform_srt,
    "vec3 * transform_srt",
    op => mul,
    ty1 => Vec3,
    from1 => random_vec3,
    ty2 => TransformSRT,
    from2 => random_transform_srt
);

bench_binop!(
    vec3_mul_transform_rt,
    "vec3 * transform_rt",
    op => mul,
    ty1 => Vec3,
    from1 => random_vec3,
    ty2 => TransformRT,
    from2 => random_transform_rt
);

// bench_unop!(
//     transform_srt_inverse_ptv_scale,
//     "transform_srt inverse (+ve scale)",
//     op => inverse,
//     ty => TransformSRT,
//     from => TransformRT
// );
// bench_unop!(
//     transform_rt_inverse,
//     "transform_rt inverse",
//     op => inverse,
//     ty => TransformRT
// );

bench_binop!(
    transform_srt_mul_srt,
    "transform_srt * transform_srt",
    op => mul,
    ty => TransformSRT,
    from => random_transform_srt
);

bench_binop!(
    transform_rt_mul_rt,
    "transform_rt * transform_rt",
    op => mul,
    ty => TransformRT,
    from => random_transform_rt
);

criterion_group!(
    benches,
    // transform_rt_inverse,
    transform_srt_inverse,
    // transform_srt_inverse_ptv_scale,
    transform_rt_mul_rt,
    transform_srt_mul_srt,
    vec3_mul_transform_rt,
    vec3_mul_transform_srt,
);

criterion_main!(benches);