aboutsummaryrefslogtreecommitdiff
path: root/bench/tests/BenchMat3f.c
diff options
context:
space:
mode:
Diffstat (limited to 'bench/tests/BenchMat3f.c')
-rw-r--r--bench/tests/BenchMat3f.c190
1 files changed, 190 insertions, 0 deletions
diff --git a/bench/tests/BenchMat3f.c b/bench/tests/BenchMat3f.c
new file mode 100644
index 0000000..8d85c04
--- /dev/null
+++ b/bench/tests/BenchMat3f.c
@@ -0,0 +1,190 @@
+#include <BH/Bench.h>
+#include <BH/Math/Mat3f.h>
+
+
+static float matA[9] =
+{
+ 1.0f, 0.5f, 0.0f,
+ 0.2f, 2.0f, 0.3f,
+ 0.0f, 0.1f, 1.5f
+};
+static float matB[9] =
+{
+ 0.8f, 0.0f, 0.2f,
+ 0.1f, 1.2f, 0.4f,
+ 0.3f, 0.0f, 0.9f
+};
+static float outMat[9];
+static float outInv[9];
+static float vec3[3] = {1.5f, 2.5f, 1.0f};
+static float vec2[2] = {3.0f, 4.0f};
+static float outVec3[3];
+static float outVec2[2];
+
+
+BH_BENCH_TEST(Identity)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fIdentity(outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Add)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fAdd(matA, matB, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Sub)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fSub(matA, matB, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Mul)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fMul(matA, matB, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Scale)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fScale(matA, 2.5f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Transpose)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fTranspose(matA, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(Trace)
+{
+ while (BH_BenchIter(state))
+ {
+ float trace;
+ trace = BH_Mat3fTrace(matA);
+ BH_BenchDoNotOptimize(trace);
+ }
+}
+
+
+BH_BENCH_TEST(Det)
+{
+ while (BH_BenchIter(state))
+ {
+ float det;
+ det = BH_Mat3fDet(matA);
+ BH_BenchDoNotOptimize(det);
+ }
+}
+
+
+BH_BENCH_TEST(Inverse)
+{
+ while (BH_BenchIter(state))
+ {
+ int result;
+ result = BH_Mat3fInverse(matA, outInv);
+ BH_BenchDoNotOptimize(result);
+ BH_BenchDoNotOptimize(outInv);
+ }
+}
+
+
+BH_BENCH_TEST(FromScale)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fFromScale(2.0f, 3.0f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromTranslation)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fFromTranslation(4.0f, -2.0f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(FromRotation)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fFromRotation(0.7854f, outMat);
+ BH_BenchDoNotOptimize(outMat);
+ }
+}
+
+
+BH_BENCH_TEST(ApplyVec3f)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fApplyVec3f(matA, vec3, outVec3);
+ BH_BenchDoNotOptimize(outVec3);
+ }
+}
+
+
+BH_BENCH_TEST(ApplyVec2f)
+{
+ while (BH_BenchIter(state))
+ {
+ BH_Mat3fApplyVec2f(matA, vec2, outVec2);
+ BH_BenchDoNotOptimize(outVec2);
+ }
+}
+
+
+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(FromRotation);
+ BH_BENCH_ADD(ApplyVec3f);
+ BH_BENCH_ADD(ApplyVec2f);
+
+ return BH_BenchRun();
+}