287 lines
6.6 KiB
C
287 lines
6.6 KiB
C
#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();
|
|
}
|