13#include <benchmark/benchmark.h>
20static void BM_BigEndianCopyUInt16(benchmark::State& state)
22 auto const bytes =
static_cast<size_t>(
state.range(0));
23 int const count = bytes /
sizeof(uint16_t);
24 std::vector<uint16_t>
src(
count, 0xCAFE);
25 auto* dest =
static_cast<uint16_t*
>(std::aligned_alloc(64, bytes));
26 for (
auto _ :
state) {
28 benchmark::DoNotOptimize(dest);
33BENCHMARK(BM_BigEndianCopyUInt16)->RangeMultiplier(2)->Range(32000, 512000);
35static void BM_BigEndianCopyUInt32(benchmark::State& state)
37 auto const bytes =
static_cast<size_t>(
state.range(0));
38 int const count = bytes /
sizeof(uint32_t);
39 std::vector<uint32_t>
src(
count, 0xDEADBEEF);
40 auto* dest =
static_cast<uint32_t*
>(std::aligned_alloc(64, bytes));
41 for (
auto _ :
state) {
43 benchmark::DoNotOptimize(dest);
48BENCHMARK(BM_BigEndianCopyUInt32)->RangeMultiplier(2)->Range(32000, 512000);
50static void BM_BigEndianCopyUInt64(benchmark::State& state)
52 auto const bytes =
static_cast<size_t>(
state.range(0));
53 int const count = bytes /
sizeof(uint64_t);
54 std::vector<uint64_t>
src(
count, 0x0123456789ABCDEFULL);
55 auto* dest =
static_cast<uint64_t*
>(std::aligned_alloc(64, bytes));
56 for (
auto _ :
state) {
58 benchmark::DoNotOptimize(dest);
63BENCHMARK(BM_BigEndianCopyUInt64)->RangeMultiplier(2)->Range(32000, 512000);
BENCHMARK(BM_BigEndianCopyUInt16) -> RangeMultiplier(2) ->Range(32000, 512000)
Defining ITS Vertex explicitly as messageable.
void bigEndianCopy(void *dest, const void *src, int count, size_t typeSize)