aboutsummaryrefslogtreecommitdiff
path: root/bench/tests/BenchMat4f.c
diff options
context:
space:
mode:
Diffstat (limited to 'bench/tests/BenchMat4f.c')
-rw-r--r--bench/tests/BenchMat4f.c285
1 files changed, 285 insertions, 0 deletions
diff --git a/bench/tests/BenchMat4f.c b/bench/tests/BenchMat4f.c
new file mode 100644
index 0000000..c124cc7
--- /dev/null
+++ b/bench/tests/BenchMat4f.c
@@ -0,0 +1,285 @@
+#include <BH/Bench.h>
+#include <BH/Math/Mat4f.h>
+
+
+static float matA[16] =
+{
+ 1.0f, 0.2f, 0.0f, 0.0f,
+ 0.1f, 1.5f, 0.3f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
+ 1.0f, 2.0f, 3.0f, 1.0f
+};
+static float matB[16] =
+{
+ 0.9f, 0.0f, 0.1f, 0.0f,
+ 0.0f, 1.1f, 0.0f, 0.0f,
+ 0.2f, 0.3f, 0.8f, 0.0f,
+ 0.5f, 1.0f, 1.5f, 1.0f
+};
+static float outMat[16];
+static float outInv[16];
+static float vec4[4] = {1.0f, 2.0f, 3.0f, 1.0f};
+static float vec3[3] = {4.0f, 5.0f, 6.0f};
+static float outVec4[4];
+static float outVec3[3];
+static float quat[4] = {0.707f, 0.0f, 0.0f, 0.707f};
+static float axis[3] = {0.577f, 0.577f, 0.577f};
+static float camPos[3] = {0.0f, 0.0f, 5.0f};
+static float camAt[3] = {0.0f, 0.0f, 0.0f};
+static float camUp[3] = {0.0f, 1.0f, 0.0f};
+
+
+BH_BENCH_TEST(Identity)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fIdentity(outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Add)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fAdd(matA, matB, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Sub)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fSub(matA, matB, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Mul)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fMul(matA, matB, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Scale)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fScale(matA, 1.5f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Transpose)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fTranspose(matA, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Trace)
+{
+ while (BH_BenchIter(state))
+ {
+ float trace;
+ trace = BH_Mat4fTrace(matA);
+ BH_BenchDoNotOptimize(trace);
+ }
+}
+
+
+BH_BENCH_TEST(Det)
+{
+ while (BH_BenchIter(state))
+ {
+ float det;
+ det = BH_Mat4fDet(matA);
+ BH_BenchDoNotOptimize(det);
+ }
+}
+
+
+BH_BENCH_TEST(Inverse)
+{
+ while (BH_BenchIter(state))
+ {
+ int result;
+ result = BH_Mat4fInverse(matA, outInv);
+ BH_BenchDoNotOptimize(result);
+ BH_BenchDoNotOptimize(outInv);
+ }
+}
+
+
+BH_BENCH_TEST(FromScale)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromScale(2.0f, 3.0f, 4.0f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromTranslation)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromTranslation(1.0f, -1.0f, 2.5f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromRotationX)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromRotationX(0.7854f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromRotationY)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromRotationY(0.7854f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromRotationZ)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromRotationZ(0.7854f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromAxis)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromAxis(axis, 1.0472f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromEuler)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromEuler(0.3f, 0.4f, 0.5f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromQuat4f)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromQuat4f(quat, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromOrtho)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromOrtho(-4.0f, 4.0f, -3.0f, 3.0f, 0.1f, 100.0f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromFrustum)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromFrustum(60.0f, 1.77f, 0.1f, 100.0f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromLookAt)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fFromLookAt(camPos, camAt, camUp, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(ApplyVec4f)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fApplyVec4f(matA, vec4, outVec4);
+ BH_BenchDoNotOptimize(outVec4);
+ }
+}
+
+
+BH_BENCH_TEST(ApplyVec3f)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat4fApplyVec3f(matA, vec3, outVec3);
+ BH_BenchDoNotOptimize(outVec3);
+ }
+}
+
+
+int main(int argc, char **argv)
+{
+ BH_UNUSED(argc);
+ BH_UNUSED(argv);
+
+ BH_BENCH_ADD(Identity);
+ BH_BENCH_ADD(Add);
+ BH_BENCH_ADD(Sub);
+ BH_BENCH_ADD(Mul);
+ BH_BENCH_ADD(Scale);
+ BH_BENCH_ADD(Transpose);
+ BH_BENCH_ADD(Trace);
+ BH_BENCH_ADD(Det);
+ BH_BENCH_ADD(Inverse);
+ BH_BENCH_ADD(FromScale);
+ BH_BENCH_ADD(FromTranslation);
+ BH_BENCH_ADD(FromRotationX);
+ BH_BENCH_ADD(FromRotationY);
+ BH_BENCH_ADD(FromRotationZ);
+ BH_BENCH_ADD(FromAxis);
+ BH_BENCH_ADD(FromEuler);
+ BH_BENCH_ADD(FromQuat4f);
+ BH_BENCH_ADD(FromOrtho);
+ BH_BENCH_ADD(FromFrustum);
+ BH_BENCH_ADD(FromLookAt);
+ BH_BENCH_ADD(ApplyVec4f);
+ BH_BENCH_ADD(ApplyVec3f);
+
+ return BH_BenchRun();
+}