diff --git a/benches/common/macros.rs b/benches/common/macros.rs index 84f6bc2..54eac6d 100644 --- a/benches/common/macros.rs +++ b/benches/common/macros.rs @@ -13,30 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -macro_rules! bench_binop( - ($name: ident, $t1: ty, $t2: ty, $binop: ident) => { - #[bench] - fn $name(bh: &mut Bencher) { - const LEN: usize = 1 << 13; - - let mut rng = IsaacRng::new_unseeded(); - - let elems1: Vec<$t1> = (0..LEN).map(|_| rng.gen::<$t1>()).collect(); - let elems2: Vec<$t2> = (0..LEN).map(|_| rng.gen::<$t2>()).collect(); - let mut i = 0; - - bh.iter(|| { - i = (i + 1) & (LEN - 1); - - unsafe { - test::black_box(elems1.get_unchecked(i).$binop(elems2.get_unchecked(i))) - } - }) - } - } -); - -macro_rules! bench_binop_deref( +macro_rules! bench_binop { ($name: ident, $t1: ty, $t2: ty, $binop: ident) => { #[bench] fn $name(bh: &mut Bencher) { @@ -56,10 +33,10 @@ macro_rules! bench_binop_deref( } }) } - } -); + }; +} -macro_rules! bench_unop( +macro_rules! bench_unop { ($name: ident, $t: ty, $unop: ident) => { #[bench] fn $name(bh: &mut Bencher) { @@ -78,10 +55,10 @@ macro_rules! bench_unop( } }) } - } -); + }; +} -macro_rules! bench_construction( +macro_rules! bench_construction { ($name: ident, $t: ty, $constructor: path [ $($args: ident: $types: ty),+ ]) => { #[bench] fn $name(bh: &mut Bencher) { @@ -101,5 +78,5 @@ macro_rules! bench_construction( } }) } - } -); + }; +} diff --git a/benches/construction.rs b/benches/construction.rs index c0ed7c9..c49c08d 100644 --- a/benches/construction.rs +++ b/benches/construction.rs @@ -39,7 +39,7 @@ fn bench_from_axis_angle>(bh: &mut Bencher) { i = (i + 1) & (LEN - 1); unsafe { - let res: T = Rotation3::from_axis_angle(axis.get_unchecked(i), *angle.get_unchecked(i)); + let res: T = Rotation3::from_axis_angle(*axis.get_unchecked(i), *angle.get_unchecked(i)); test::black_box(res) } }) diff --git a/benches/mat.rs b/benches/mat.rs index 225b98d..f472be2 100644 --- a/benches/mat.rs +++ b/benches/mat.rs @@ -20,35 +20,37 @@ extern crate test; extern crate cgmath; use rand::{IsaacRng, Rng}; +use std::ops::*; use test::Bencher; + use cgmath::*; #[path="common/macros.rs"] #[macro_use] mod macros; -bench_binop!(_bench_matrix2_mul_m, Matrix2, Matrix2, mul_m); -bench_binop!(_bench_matrix3_mul_m, Matrix3, Matrix3, mul_m); -bench_binop!(_bench_matrix4_mul_m, Matrix4, Matrix4, mul_m); +bench_binop!(_bench_matrix2_mul_m, Matrix2, Matrix2, mul); +bench_binop!(_bench_matrix3_mul_m, Matrix3, Matrix3, mul); +bench_binop!(_bench_matrix4_mul_m, Matrix4, Matrix4, mul); -bench_binop!(_bench_matrix2_add_m, Matrix2, Matrix2, add_m); -bench_binop!(_bench_matrix3_add_m, Matrix3, Matrix3, add_m); -bench_binop!(_bench_matrix4_add_m, Matrix4, Matrix4, add_m); +bench_binop!(_bench_matrix2_add_m, Matrix2, Matrix2, add); +bench_binop!(_bench_matrix3_add_m, Matrix3, Matrix3, add); +bench_binop!(_bench_matrix4_add_m, Matrix4, Matrix4, add); -bench_binop!(_bench_matrix2_sub_m, Matrix2, Matrix2, sub_m); -bench_binop!(_bench_matrix3_sub_m, Matrix3, Matrix3, sub_m); -bench_binop!(_bench_matrix4_sub_m, Matrix4, Matrix4, sub_m); +bench_binop!(_bench_matrix2_sub_m, Matrix2, Matrix2, sub); +bench_binop!(_bench_matrix3_sub_m, Matrix3, Matrix3, sub); +bench_binop!(_bench_matrix4_sub_m, Matrix4, Matrix4, sub); -bench_binop!(_bench_matrix2_mul_v, Matrix2, Vector2, mul_v); -bench_binop!(_bench_matrix3_mul_v, Matrix3, Vector3, mul_v); -bench_binop!(_bench_matrix4_mul_v, Matrix4, Vector4, mul_v); +bench_binop!(_bench_matrix2_mul_v, Matrix2, Vector2, mul); +bench_binop!(_bench_matrix3_mul_v, Matrix3, Vector3, mul); +bench_binop!(_bench_matrix4_mul_v, Matrix4, Vector4, mul); -bench_binop_deref!(_bench_matrix2_mul_s, Matrix2, f32, mul_s); -bench_binop_deref!(_bench_matrix3_mul_s, Matrix3, f32, mul_s); -bench_binop_deref!(_bench_matrix4_mul_s, Matrix4, f32, mul_s); +bench_binop!(_bench_matrix2_mul_s, Matrix2, f32, mul); +bench_binop!(_bench_matrix3_mul_s, Matrix3, f32, mul); +bench_binop!(_bench_matrix4_mul_s, Matrix4, f32, mul); -bench_binop_deref!(_bench_matrix2_div_s, Matrix2, f32, div_s); -bench_binop_deref!(_bench_matrix3_div_s, Matrix3, f32, div_s); -bench_binop_deref!(_bench_matrix4_div_s, Matrix4, f32, div_s); +bench_binop!(_bench_matrix2_div_s, Matrix2, f32, div); +bench_binop!(_bench_matrix3_div_s, Matrix3, f32, div); +bench_binop!(_bench_matrix4_div_s, Matrix4, f32, div); bench_unop!(_bench_matrix2_invert, Matrix2, invert); bench_unop!(_bench_matrix3_invert, Matrix3, invert); diff --git a/benches/quat.rs b/benches/quat.rs index 1993609..81b4f9e 100644 --- a/benches/quat.rs +++ b/benches/quat.rs @@ -20,18 +20,20 @@ extern crate test; extern crate cgmath; use rand::{IsaacRng, Rng}; +use std::ops::*; use test::Bencher; + use cgmath::*; #[path="common/macros.rs"] #[macro_use] mod macros; -bench_binop!(_bench_quat_add_q, Quaternion, Quaternion, add_q); -bench_binop!(_bench_quat_sub_q, Quaternion, Quaternion, sub_q); -bench_binop!(_bench_quat_mul_q, Quaternion, Quaternion, mul_q); -bench_binop!(_bench_quat_mul_v, Quaternion, Vector3, mul_v); -bench_binop_deref!(_bench_quat_mul_s, Quaternion, f32, mul_s); -bench_binop_deref!(_bench_quat_div_s, Quaternion, f32, div_s); +bench_binop!(_bench_quat_add_q, Quaternion, Quaternion, add); +bench_binop!(_bench_quat_sub_q, Quaternion, Quaternion, sub); +bench_binop!(_bench_quat_mul_q, Quaternion, Quaternion, mul); +bench_binop!(_bench_quat_mul_v, Quaternion, Vector3, mul); +bench_binop!(_bench_quat_mul_s, Quaternion, f32, mul); +bench_binop!(_bench_quat_div_s, Quaternion, f32, div); bench_unop!(_bench_quat_invert, Quaternion, invert); bench_unop!(_bench_quat_conjugate, Quaternion, conjugate); bench_unop!(_bench_quat_normalize, Quaternion, normalize); diff --git a/benches/vec.rs b/benches/vec.rs index 028fa30..d1739cf 100644 --- a/benches/vec.rs +++ b/benches/vec.rs @@ -20,43 +20,45 @@ extern crate test; extern crate cgmath; use rand::{IsaacRng, Rng}; +use std::ops::*; use test::Bencher; + use cgmath::*; #[path="common/macros.rs"] #[macro_use] mod macros; -bench_binop!(_bench_vector2_add_v, Vector2, Vector2, add_v); -bench_binop!(_bench_vector3_add_v, Vector3, Vector3, add_v); -bench_binop!(_bench_vector4_add_v, Vector4, Vector4, add_v); +bench_binop!(_bench_vector2_add_v, Vector2, Vector2, add); +bench_binop!(_bench_vector3_add_v, Vector3, Vector3, add); +bench_binop!(_bench_vector4_add_v, Vector4, Vector4, add); -bench_binop!(_bench_vector2_sub_v, Vector2, Vector2, sub_v); -bench_binop!(_bench_vector3_sub_v, Vector3, Vector3, sub_v); -bench_binop!(_bench_vector4_sub_v, Vector4, Vector4, sub_v); +bench_binop!(_bench_vector2_sub_v, Vector2, Vector2, sub); +bench_binop!(_bench_vector3_sub_v, Vector3, Vector3, sub); +bench_binop!(_bench_vector4_sub_v, Vector4, Vector4, sub); -bench_binop!(_bench_vector2_mul_v, Vector2, Vector2, mul_v); -bench_binop!(_bench_vector3_mul_v, Vector3, Vector3, mul_v); -bench_binop!(_bench_vector4_mul_v, Vector4, Vector4, mul_v); +bench_binop!(_bench_vector2_mul_v, Vector2, Vector2, mul); +bench_binop!(_bench_vector3_mul_v, Vector3, Vector3, mul); +bench_binop!(_bench_vector4_mul_v, Vector4, Vector4, mul); -bench_binop!(_bench_vector2_div_v, Vector2, Vector2, div_v); -bench_binop!(_bench_vector3_div_v, Vector3, Vector3, div_v); -bench_binop!(_bench_vector4_div_v, Vector4, Vector4, div_v); +bench_binop!(_bench_vector2_div_v, Vector2, Vector2, div); +bench_binop!(_bench_vector3_div_v, Vector3, Vector3, div); +bench_binop!(_bench_vector4_div_v, Vector4, Vector4, div); -bench_binop_deref!(_bench_vector2_add_s, Vector2, f32, add_s); -bench_binop_deref!(_bench_vector3_add_s, Vector3, f32, add_s); -bench_binop_deref!(_bench_vector4_add_s, Vector4, f32, add_s); +bench_binop!(_bench_vector2_add_s, Vector2, f32, add); +bench_binop!(_bench_vector3_add_s, Vector3, f32, add); +bench_binop!(_bench_vector4_add_s, Vector4, f32, add); -bench_binop_deref!(_bench_vector2_sub_s, Vector2, f32, sub_s); -bench_binop_deref!(_bench_vector3_sub_s, Vector3, f32, sub_s); -bench_binop_deref!(_bench_vector4_sub_s, Vector4, f32, sub_s); +bench_binop!(_bench_vector2_sub_s, Vector2, f32, sub); +bench_binop!(_bench_vector3_sub_s, Vector3, f32, sub); +bench_binop!(_bench_vector4_sub_s, Vector4, f32, sub); -bench_binop_deref!(_bench_vector2_mul_s, Vector2, f32, mul_s); -bench_binop_deref!(_bench_vector3_mul_s, Vector3, f32, mul_s); -bench_binop_deref!(_bench_vector4_mul_s, Vector4, f32, mul_s); +bench_binop!(_bench_vector2_mul_s, Vector2, f32, mul); +bench_binop!(_bench_vector3_mul_s, Vector3, f32, mul); +bench_binop!(_bench_vector4_mul_s, Vector4, f32, mul); -bench_binop_deref!(_bench_vector2_div_s, Vector2, f32, div_s); -bench_binop_deref!(_bench_vector3_div_s, Vector3, f32, div_s); -bench_binop_deref!(_bench_vector4_div_s, Vector4, f32, div_s); +bench_binop!(_bench_vector2_div_s, Vector2, f32, div); +bench_binop!(_bench_vector3_div_s, Vector3, f32, div); +bench_binop!(_bench_vector4_div_s, Vector4, f32, div); bench_binop!(_bench_vector2_dot, Vector2, Vector2, dot);