Add more benchmarks, add subcount option

This commit is contained in:
2025-10-13 11:17:11 +03:00
parent 35b2e71753
commit 3f7b872f0f
20 changed files with 1479 additions and 22 deletions

143
bench/tests/BenchRay2f.c Normal file
View File

@@ -0,0 +1,143 @@
#include <BH/Bench.h>
#include <BH/Math/Ray2f.h>
static float rayAStart[2] = {1.0f, 1.0f};
static float rayADir[2] = {1.0f, 0.5f};
static float rayBStart[2] = {3.0f, 0.0f};
static float rayBDir[2] = {-0.5f, 1.0f};
static float lineEq[3] = {1.0f, 1.0f, -4.0f};
static float segStart[2] = {0.0f, 3.0f};
static float segEnd[2] = {5.0f, 2.0f};
static float boxMin[2] = {2.0f, 2.0f};
static float boxMax[2] = {6.0f, 5.0f};
static float outPoint[2];
BH_BENCH_TEST(IntersectLine)
{
while (BH_BenchIter(state))
{
float t;
int result;
result = BH_Ray2fIntersectLine(rayAStart, rayADir, lineEq, &t, outPoint);
BH_BenchDoNotOptimize(result);
BH_BenchDoNotOptimize(t);
BH_BenchDoNotOptimize(outPoint);
}
}
BH_BENCH_TEST(IntersectTime)
{
while (BH_BenchIter(state))
{
float time1, time2;
int result;
result = BH_Ray2fIntersectTime(rayAStart, rayADir, rayBStart, rayBDir, &time1, &time2);
BH_BenchDoNotOptimize(result);
BH_BenchDoNotOptimize(time1);
BH_BenchDoNotOptimize(time2);
}
}
BH_BENCH_TEST(IntersectRay)
{
while (BH_BenchIter(state))
{
float t;
int result;
result = BH_Ray2fIntersectRay(rayAStart, rayADir, rayBStart, rayBDir, &t, outPoint);
BH_BenchDoNotOptimize(result);
BH_BenchDoNotOptimize(t);
BH_BenchDoNotOptimize(outPoint);
}
}
BH_BENCH_TEST(IntersectSegment)
{
while (BH_BenchIter(state))
{
float t;
int result;
result = BH_Ray2fIntersectSegment(rayAStart, rayADir, segStart, segEnd, &t, outPoint);
BH_BenchDoNotOptimize(result);
BH_BenchDoNotOptimize(t);
BH_BenchDoNotOptimize(outPoint);
}
}
BH_BENCH_TEST(SegmentIntersectLine)
{
while (BH_BenchIter(state))
{
float t;
int result;
result = BH_Segment2fIntersectLine(segStart, segEnd, lineEq, &t, outPoint);
BH_BenchDoNotOptimize(result);
BH_BenchDoNotOptimize(t);
BH_BenchDoNotOptimize(outPoint);
}
}
BH_BENCH_TEST(SegmentIntersectSegment)
{
while (BH_BenchIter(state))
{
float t;
int result;
result = BH_Segment2fIntersectSegment(segStart, segEnd, rayAStart, rayBStart, &t, outPoint);
BH_BenchDoNotOptimize(result);
BH_BenchDoNotOptimize(t);
BH_BenchDoNotOptimize(outPoint);
}
}
BH_BENCH_TEST(IntersectBox2f)
{
while (BH_BenchIter(state))
{
float t;
int result;
result = BH_Ray2fIntersectBox2f(rayAStart, rayADir, boxMin, boxMax, &t, outPoint);
BH_BenchDoNotOptimize(result);
BH_BenchDoNotOptimize(t);
BH_BenchDoNotOptimize(outPoint);
}
}
BH_BENCH_TEST(SegmentIntersectBox2f)
{
while (BH_BenchIter(state))
{
float t;
int result;
result = BH_Segment2fIntersectBox2f(segStart, segEnd, boxMin, boxMax, &t, outPoint);
BH_BenchDoNotOptimize(result);
BH_BenchDoNotOptimize(t);
BH_BenchDoNotOptimize(outPoint);
}
}
int main(int argc, char **argv)
{
BH_UNUSED(argc);
BH_UNUSED(argv);
BH_BENCH_ADD(IntersectLine);
BH_BENCH_ADD(IntersectTime);
BH_BENCH_ADD(IntersectRay);
BH_BENCH_ADD(IntersectSegment);
BH_BENCH_ADD(SegmentIntersectLine);
BH_BENCH_ADD(SegmentIntersectSegment);
BH_BENCH_ADD(IntersectBox2f);
BH_BENCH_ADD(SegmentIntersectBox2f);
return BH_BenchRun();
}