Add more benchmarks, add subcount option
This commit is contained in:
@@ -2,6 +2,9 @@
|
||||
#define BH_BENCH_H
|
||||
|
||||
|
||||
#include <BH/Common.h>
|
||||
|
||||
|
||||
typedef struct BH_Bench BH_Bench;
|
||||
typedef void (*BH_BenchCallback)(BH_Bench *);
|
||||
|
||||
@@ -21,6 +24,10 @@ void BH_BenchAdd(const char *name,
|
||||
int BH_BenchIter(BH_Bench *state);
|
||||
|
||||
|
||||
void BH_BenchSubcount(BH_Bench *state,
|
||||
size_t count);
|
||||
|
||||
|
||||
int BH_BenchRun(void);
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ struct BH_Bench
|
||||
BH_BenchCallback cb;
|
||||
int started;
|
||||
size_t iterations;
|
||||
size_t subcount;
|
||||
};
|
||||
|
||||
|
||||
@@ -51,6 +52,7 @@ void BH_BenchAdd(const char *name,
|
||||
bench->cb = cb;
|
||||
bench->started = 0;
|
||||
bench->iterations = 0;
|
||||
bench->subcount = 1;
|
||||
|
||||
/* Append benchmark entry */
|
||||
current = root;
|
||||
@@ -84,8 +86,8 @@ int BH_BenchIter(BH_Bench *state)
|
||||
if (millis > 1000 || state->iterations > 1000000000)
|
||||
{
|
||||
float ips, ns;
|
||||
ips = state->iterations / (millis / 1000.0f);
|
||||
ns = (millis * 1000000.0) / state->iterations;
|
||||
ips = state->iterations / (millis / 1000.0f) * state->subcount;
|
||||
ns = (millis * 1000000.0) / state->iterations / state->subcount;
|
||||
printf("%-12s %.2f ips (%.2f ns)\n", state->name, ips, ns);
|
||||
return 0;
|
||||
}
|
||||
@@ -93,6 +95,13 @@ int BH_BenchIter(BH_Bench *state)
|
||||
}
|
||||
|
||||
|
||||
void BH_BenchSubcount(BH_Bench *state,
|
||||
size_t count)
|
||||
{
|
||||
state->subcount = count;
|
||||
}
|
||||
|
||||
|
||||
int BH_BenchRun(void)
|
||||
{
|
||||
BH_Bench *current;
|
||||
|
||||
169
bench/tests/BenchAlgo.c
Normal file
169
bench/tests/BenchAlgo.c
Normal file
@@ -0,0 +1,169 @@
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Algo.h>
|
||||
|
||||
|
||||
#define NUM_ENTRIES 1000
|
||||
|
||||
|
||||
static int testArray[NUM_ENTRIES];
|
||||
static int tempArray[NUM_ENTRIES];
|
||||
static int pivotValue;
|
||||
|
||||
|
||||
static int intEqual(const void *a, const void *b)
|
||||
{
|
||||
int ia, ib;
|
||||
ia = *(const int*)a;
|
||||
ib = *(const int*)b;
|
||||
return (ia > ib) - (ia < ib);
|
||||
}
|
||||
|
||||
|
||||
static void algoSetup(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
testArray[i] = NUM_ENTRIES - i;
|
||||
tempArray[i] = NUM_ENTRIES - i;
|
||||
}
|
||||
pivotValue = NUM_ENTRIES / 2;
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(Swap)
|
||||
{
|
||||
int a = 123;
|
||||
int b = 456;
|
||||
algoSetup();
|
||||
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
BH_Swap(&a, &b, sizeof(int));
|
||||
BH_BenchDoNotOptimize(a);
|
||||
BH_BenchDoNotOptimize(b);
|
||||
BH_Swap(&a, &b, sizeof(int));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(Partition)
|
||||
{
|
||||
algoSetup();
|
||||
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
void *pivot, *result;
|
||||
for (int i = 0; i < NUM_ENTRIES; ++i)
|
||||
testArray[i] = tempArray[i];
|
||||
|
||||
pivot = &pivotValue;
|
||||
result = BH_Partition(pivot, testArray, NUM_ENTRIES, sizeof(int), intEqual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(testArray);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(Sort)
|
||||
{
|
||||
algoSetup();
|
||||
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
testArray[i] = tempArray[i];
|
||||
|
||||
BH_Sort(testArray, NUM_ENTRIES, sizeof(int), intEqual);
|
||||
BH_BenchDoNotOptimize(testArray);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(HeapMake)
|
||||
{
|
||||
algoSetup();
|
||||
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
testArray[i] = tempArray[i];
|
||||
|
||||
BH_HeapMake(testArray, NUM_ENTRIES, sizeof(int), intEqual);
|
||||
BH_BenchDoNotOptimize(testArray);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(HeapRemove)
|
||||
{
|
||||
algoSetup();
|
||||
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
testArray[i] = tempArray[i];
|
||||
BH_HeapMake(testArray, NUM_ENTRIES, sizeof(int), intEqual);
|
||||
BH_HeapRemove(testArray, NUM_ENTRIES, sizeof(int), intEqual);
|
||||
BH_BenchDoNotOptimize(testArray);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(HeapInsert)
|
||||
{
|
||||
algoSetup();
|
||||
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i, value;
|
||||
|
||||
for (i = 0; i < NUM_ENTRIES - 1; ++i)
|
||||
testArray[i] = tempArray[i];
|
||||
testArray[NUM_ENTRIES - 1] = 0;
|
||||
BH_HeapMake(testArray, NUM_ENTRIES - 1, sizeof(int), intEqual);
|
||||
|
||||
value = 250;
|
||||
BH_HeapInsert(&value, testArray, NUM_ENTRIES - 1, sizeof(int), intEqual);
|
||||
BH_BenchDoNotOptimize(testArray);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(HeapReplace)
|
||||
{
|
||||
algoSetup();
|
||||
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i, value;
|
||||
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
testArray[i] = tempArray[i];
|
||||
BH_HeapMake(testArray, NUM_ENTRIES, sizeof(int), intEqual);
|
||||
|
||||
value = 100;
|
||||
BH_HeapReplace(&value, testArray, NUM_ENTRIES, sizeof(int), intEqual);
|
||||
BH_BenchDoNotOptimize(testArray);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
BH_UNUSED(argc);
|
||||
BH_UNUSED(argv);
|
||||
|
||||
BH_BENCH_ADD(Swap);
|
||||
BH_BENCH_ADD(Partition);
|
||||
BH_BENCH_ADD(Sort);
|
||||
BH_BENCH_ADD(HeapMake);
|
||||
BH_BENCH_ADD(HeapRemove);
|
||||
BH_BENCH_ADD(HeapInsert);
|
||||
BH_BENCH_ADD(HeapReplace);
|
||||
|
||||
return BH_BenchRun();
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Box2f.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Box2f.h>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Box3f.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Box3f.h>
|
||||
|
||||
|
||||
static float boxAMin[3] = {1.0f, 2.0f, 3.0f};
|
||||
|
||||
136
bench/tests/BenchHashmap.c
Normal file
136
bench/tests/BenchHashmap.c
Normal file
@@ -0,0 +1,136 @@
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Hashmap.h>
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
#define NUM_ENTRIES 1000
|
||||
|
||||
|
||||
static int keys[NUM_ENTRIES];
|
||||
static char values[NUM_ENTRIES][16];
|
||||
static BH_Hashmap *map;
|
||||
static BH_Hashmap *warmMap;
|
||||
|
||||
|
||||
int BH_IntEqual(const void *a, const void *b)
|
||||
{
|
||||
return (*(const int*)a == *(const int*)b) ? 0 : 1;
|
||||
}
|
||||
|
||||
|
||||
size_t BH_IntHash(const void *key)
|
||||
{
|
||||
int k = *(const int*)key;
|
||||
return (size_t)((k * 2654435761U) >> 8);
|
||||
}
|
||||
|
||||
|
||||
static void setupData(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
keys[i] = i + 1;
|
||||
sprintf(values[i], "value_%d", i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void setupWarmMap(void)
|
||||
{
|
||||
int i;
|
||||
warmMap = BH_HashmapNew(BH_IntEqual, BH_IntHash);
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
BH_HashmapInsert(warmMap, &keys[i], values[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(NewFree)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
map = BH_HashmapNew(BH_IntEqual, BH_IntHash);
|
||||
BH_BenchDoNotOptimize(map);
|
||||
BH_HashmapFree(map);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(ReserveInsert)
|
||||
{
|
||||
BH_BenchSubcount(state, NUM_ENTRIES);
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
map = BH_HashmapNew(BH_IntEqual, BH_IntHash);
|
||||
BH_HashmapReserve(map, NUM_ENTRIES);
|
||||
|
||||
for (int i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
BH_HashmapInsert(map, &keys[i], values[i]);
|
||||
}
|
||||
BH_HashmapClear(map);
|
||||
|
||||
BH_BenchDoNotOptimize(map);
|
||||
BH_HashmapFree(map);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(Lookup)
|
||||
{
|
||||
BH_BenchSubcount(state, NUM_ENTRIES);
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i;
|
||||
void *value = NULL;
|
||||
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
BH_HashmapAt(warmMap, &keys[i], &value);
|
||||
}
|
||||
BH_BenchDoNotOptimize(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(Remove)
|
||||
{
|
||||
BH_BenchSubcount(state, NUM_ENTRIES);
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i;
|
||||
map = BH_HashmapNew(BH_IntEqual, BH_IntHash);
|
||||
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
BH_HashmapInsert(map, &keys[i], values[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
BH_HashmapRemove(map, &keys[i]);
|
||||
}
|
||||
|
||||
BH_BenchDoNotOptimize(map);
|
||||
BH_HashmapFree(map);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
BH_UNUSED(argc);
|
||||
BH_UNUSED(argv);
|
||||
|
||||
setupData();
|
||||
setupWarmMap();
|
||||
|
||||
BH_BENCH_ADD(NewFree);
|
||||
BH_BENCH_ADD(ReserveInsert);
|
||||
BH_BENCH_ADD(Lookup);
|
||||
BH_BENCH_ADD(Remove);
|
||||
|
||||
return BH_BenchRun();
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Line.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Line.h>
|
||||
|
||||
|
||||
static float pointA[2] = {1.0f, 2.0f};
|
||||
|
||||
190
bench/tests/BenchMat3f.c
Normal file
190
bench/tests/BenchMat3f.c
Normal file
@@ -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();
|
||||
}
|
||||
285
bench/tests/BenchMat4f.c
Normal file
285
bench/tests/BenchMat4f.c
Normal file
@@ -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();
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Plane.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Plane.h>
|
||||
|
||||
|
||||
static float pointA[3] = {1.0f, 2.0f, 3.0f};
|
||||
|
||||
117
bench/tests/BenchQueue.c
Normal file
117
bench/tests/BenchQueue.c
Normal file
@@ -0,0 +1,117 @@
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Queue.h>
|
||||
|
||||
|
||||
#define NUM_ENTRIES 1000
|
||||
|
||||
|
||||
static int values[NUM_ENTRIES];
|
||||
static BH_Queue *queue;
|
||||
static void *frontValue;
|
||||
static void *iter;
|
||||
static void *iterValue;
|
||||
|
||||
|
||||
static void setupData()
|
||||
{
|
||||
int i;
|
||||
queue = BH_QueueNew();
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
values[i] = i + 1;
|
||||
BH_QueueInsert(queue, &values[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(NewFree)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
queue = BH_QueueNew();
|
||||
BH_BenchDoNotOptimize(queue);
|
||||
if (queue) BH_QueueFree(queue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(ReserveInsert)
|
||||
{
|
||||
BH_BenchSubcount(state, NUM_ENTRIES);
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i;
|
||||
queue = BH_QueueNew();
|
||||
BH_QueueReserve(queue, NUM_ENTRIES);
|
||||
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
values[i] = i + 1;
|
||||
BH_QueueInsert(queue, &values[i]);
|
||||
}
|
||||
|
||||
BH_BenchDoNotOptimize(queue);
|
||||
BH_QueueFree(queue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(FrontRemove)
|
||||
{
|
||||
BH_BenchSubcount(state, NUM_ENTRIES);
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int i;
|
||||
queue = BH_QueueNew();
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
values[i] = i + 1;
|
||||
BH_QueueInsert(queue, &values[i]);
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_ENTRIES; ++i)
|
||||
{
|
||||
if (BH_QueueFront(queue, &frontValue) == 0)
|
||||
{
|
||||
BH_QueueRemove(queue);
|
||||
}
|
||||
}
|
||||
|
||||
BH_BenchDoNotOptimize(frontValue);
|
||||
BH_BenchDoNotOptimize(queue);
|
||||
BH_QueueFree(queue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(Iterate)
|
||||
{
|
||||
setupData();
|
||||
BH_BenchSubcount(state, NUM_ENTRIES);
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
iter = NULL;
|
||||
iterValue = NULL;
|
||||
while ((iter = BH_QueueIterNext(queue, iter)) != NULL)
|
||||
{
|
||||
iterValue = BH_QueueIterValue(iter);
|
||||
}
|
||||
BH_BenchDoNotOptimize(iterValue);
|
||||
}
|
||||
|
||||
BH_QueueFree(queue);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
BH_UNUSED(argc);
|
||||
BH_UNUSED(argv);
|
||||
|
||||
BH_BENCH_ADD(NewFree);
|
||||
BH_BENCH_ADD(ReserveInsert);
|
||||
BH_BENCH_ADD(FrontRemove);
|
||||
BH_BENCH_ADD(Iterate);
|
||||
|
||||
return BH_BenchRun();
|
||||
}
|
||||
143
bench/tests/BenchRay2f.c
Normal file
143
bench/tests/BenchRay2f.c
Normal 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();
|
||||
}
|
||||
115
bench/tests/BenchRay3f.c
Normal file
115
bench/tests/BenchRay3f.c
Normal file
@@ -0,0 +1,115 @@
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Ray3f.h>
|
||||
|
||||
|
||||
static float rayStart[3] = {0.0f, 0.0f, 0.0f};
|
||||
static float rayDir[3] = {1.0f, 1.0f, 1.0f};
|
||||
static float segStart[3] = {-2.0f, -2.0f, -2.0f};
|
||||
static float segEnd[3] = {2.0f, 2.0f, 2.0f};
|
||||
static float planeEq[4] = {1.0f, 1.0f, 1.0f, -3.0f};
|
||||
static float triA[3] = {1.0f, 1.0f, 1.0f};
|
||||
static float triB[3] = {2.0f, 1.0f, 0.0f};
|
||||
static float triC[3] = {0.0f, 2.0f, 1.0f};
|
||||
static float boxMin[3] = {1.0f, 1.0f, 1.0f};
|
||||
static float boxMax[3] = {3.0f, 3.0f, 3.0f};
|
||||
static float outPoint[3];
|
||||
|
||||
|
||||
BH_BENCH_TEST(IntersectPlane)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
float t;
|
||||
int result;
|
||||
result = BH_Ray3fIntersectPlane(rayStart, rayDir, planeEq, &t, outPoint);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(t);
|
||||
BH_BenchDoNotOptimize(outPoint);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(IntersectTriangle)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
float t;
|
||||
int result;
|
||||
result = BH_Ray3fIntersectTriangle(rayStart, rayDir, triA, triB, triC, &t, outPoint);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(t);
|
||||
BH_BenchDoNotOptimize(outPoint);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(SegmentIntersectPlane)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
float t;
|
||||
int result;
|
||||
result = BH_Segment3fIntersectPlane(segStart, segEnd, planeEq, &t, outPoint);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(t);
|
||||
BH_BenchDoNotOptimize(outPoint);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(SegmentIntersectTriangle)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
float t;
|
||||
int result;
|
||||
result = BH_Segment3fIntersectTriangle(segStart, segEnd, triA, triB, triC, &t, outPoint);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(t);
|
||||
BH_BenchDoNotOptimize(outPoint);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(IntersectBox3f)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
float t;
|
||||
int result;
|
||||
result = BH_Ray3fIntersectBox3f(rayStart, rayDir, boxMin, boxMax, &t, outPoint);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(t);
|
||||
BH_BenchDoNotOptimize(outPoint);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(SegmentIntersectBox3f)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
float t;
|
||||
int result;
|
||||
result = BH_Segment3fIntersectBox3f(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(IntersectPlane);
|
||||
BH_BENCH_ADD(IntersectTriangle);
|
||||
BH_BENCH_ADD(SegmentIntersectPlane);
|
||||
BH_BENCH_ADD(SegmentIntersectTriangle);
|
||||
BH_BENCH_ADD(IntersectBox3f);
|
||||
BH_BENCH_ADD(SegmentIntersectBox3f);
|
||||
|
||||
return BH_BenchRun();
|
||||
}
|
||||
286
bench/tests/BenchString.c
Normal file
286
bench/tests/BenchString.c
Normal file
@@ -0,0 +1,286 @@
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/String.h>
|
||||
|
||||
|
||||
#define BUF_SIZE 64
|
||||
static char buffer[BUF_SIZE];
|
||||
static size_t actual;
|
||||
static double testDouble = 1234.5678;
|
||||
static int8_t testInt8s = -128;
|
||||
static int16_t testInt16s = -32768;
|
||||
static int32_t testInt32s = -2147483647;
|
||||
static int64_t testInt64s = -9223372036854775807LL;
|
||||
static uint8_t testInt8u = 255;
|
||||
static uint16_t testInt16u = 65535;
|
||||
static uint32_t testInt32u = 4294967295U;
|
||||
static uint64_t testInt64u = 18446744073709551615ULL;
|
||||
static const char *strDouble = "1234.5678";
|
||||
static const char *strInt8s = "-128";
|
||||
static const char *strInt16s = "-32768";
|
||||
static const char *strInt32s = "-2147483647";
|
||||
static const char *strInt64s = "-9223372036854775807";
|
||||
static const char *strInt8u = "255";
|
||||
static const char *strInt16u = "65535";
|
||||
static const char *strInt32u = "4294967295";
|
||||
static const char *strInt64u = "18446744073709551615";
|
||||
static size_t parsedSize;
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromDouble)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromDouble(buffer, BUF_SIZE, testDouble, 'f', 6, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromInt8s)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromInt8s(buffer, BUF_SIZE, testInt8s, 10, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromInt16s)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromInt16s(buffer, BUF_SIZE, testInt16s, 10, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromInt32s)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromInt32s(buffer, BUF_SIZE, testInt32s, 10, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromInt64s)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromInt64s(buffer, BUF_SIZE, testInt64s, 10, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromInt8u)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromInt8u(buffer, BUF_SIZE, testInt8u, 10, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromInt16u)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromInt16u(buffer, BUF_SIZE, testInt16u, 10, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromInt32u)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromInt32u(buffer, BUF_SIZE, testInt32u, 10, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringFromInt64u)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int result;
|
||||
result = BH_StringFromInt64u(buffer, BUF_SIZE, testInt64u, 10, &actual);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(buffer);
|
||||
BH_BenchDoNotOptimize(actual);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToDouble)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
double result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToDouble(strDouble, &parsedSize);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToInt8s)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int8_t result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToInt8s(strInt8s, &parsedSize, 10);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToInt16s)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int16_t result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToInt16s(strInt16s, &parsedSize, 10);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToInt32s)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int32_t result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToInt32s(strInt32s, &parsedSize, 10);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToInt64s)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
int64_t result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToInt64s(strInt64s, &parsedSize, 10);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToInt8u)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
uint8_t result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToInt8u(strInt8u, &parsedSize, 10);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToInt16u)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
uint16_t result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToInt16u(strInt16u, &parsedSize, 10);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToInt32u)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
uint32_t result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToInt32u(strInt32u, &parsedSize, 10);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BH_BENCH_TEST(StringToInt64u)
|
||||
{
|
||||
while (BH_BenchIter(state))
|
||||
{
|
||||
uint64_t result;
|
||||
parsedSize = 0;
|
||||
result = BH_StringToInt64u(strInt64u, &parsedSize, 10);
|
||||
BH_BenchDoNotOptimize(result);
|
||||
BH_BenchDoNotOptimize(parsedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
BH_BENCH_ADD(StringFromDouble);
|
||||
BH_BENCH_ADD(StringFromInt8s);
|
||||
BH_BENCH_ADD(StringFromInt16s);
|
||||
BH_BENCH_ADD(StringFromInt32s);
|
||||
BH_BENCH_ADD(StringFromInt64s);
|
||||
BH_BENCH_ADD(StringFromInt8u);
|
||||
BH_BENCH_ADD(StringFromInt16u);
|
||||
BH_BENCH_ADD(StringFromInt32u);
|
||||
BH_BENCH_ADD(StringFromInt64u);
|
||||
|
||||
BH_BENCH_ADD(StringToDouble);
|
||||
BH_BENCH_ADD(StringToInt8s);
|
||||
BH_BENCH_ADD(StringToInt16s);
|
||||
BH_BENCH_ADD(StringToInt32s);
|
||||
BH_BENCH_ADD(StringToInt64s);
|
||||
BH_BENCH_ADD(StringToInt8u);
|
||||
BH_BENCH_ADD(StringToInt16u);
|
||||
BH_BENCH_ADD(StringToInt32u);
|
||||
BH_BENCH_ADD(StringToInt64u);
|
||||
|
||||
return BH_BenchRun();
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Vec2f.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Vec2f.h>
|
||||
|
||||
|
||||
static float vecA[2] = {1.0f, 2.0f};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Vec2i.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Vec2i.h>
|
||||
|
||||
|
||||
static int vecA[2] = {5, -3};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Vec3f.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Vec3f.h>
|
||||
|
||||
|
||||
static float vecA[3] = {1.0f, 2.0f, 3.0f};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Vec3i.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Vec3i.h>
|
||||
|
||||
|
||||
static int vecA[3] = {1, 2, 3};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Vec4f.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Vec4f.h>
|
||||
|
||||
|
||||
static float vecA[4] = {1.0f, 2.0f, 3.0f, 4.0f};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "BH/Bench.h"
|
||||
#include "BH/Math/Vec4i.h"
|
||||
#include <BH/Bench.h>
|
||||
#include <BH/Math/Vec4i.h>
|
||||
|
||||
|
||||
static int vecA[4] = {1, 2, 3, 4};
|
||||
|
||||
Reference in New Issue
Block a user