18#include <benchmark/benchmark.h>
24static void BM_Array_Read_Copy(benchmark::State& state)
26 std::vector<uint32_t>
a(
state.range(0), 0x0);
27 std::vector<uint32_t>
b(
state.range(0), 0x1);
28 std::vector<uint32_t>
c(
state.range(0), 0x0);
29 for (
auto _ :
state) {
30 std::vector<uint32_t> tmp(
state.range(0));
32 for (
size_t i = 0;
i <
a.size(); ++
i) {
33 tmp[
i] =
b[
i] + (
a[
i] << 16);
36 for (
size_t i = 0;
i < tmp.size(); ++
i) {
42BENCHMARK(BM_Array_Read_Copy)->RangeMultiplier(2)->Range(10e4, 2 * 10e6);
44static void BM_Array_Read_Iterator(benchmark::State& state)
46 std::vector<uint32_t>
a(
state.range(0), 0x0);
47 std::vector<uint32_t>
b(
state.range(0), 0x1);
48 std::vector<uint32_t>
c(
state.range(0), 0x0);
50 for (
auto _ :
state) {
51 auto readOP = [](
auto iterA,
auto iterB) -> uint32_t {
52 return *iterB + (*iterA << 16);
58 auto cIter =
c.begin();
60 for (
auto iter = begin; iter !=
end; ++iter) {
67BENCHMARK(BM_Array_Read_Iterator)->RangeMultiplier(2)->Range(10e4, 2 * 10e6);
69static void BM_Array_Write_Copy(benchmark::State& state)
71 std::vector<uint32_t>
a(
state.range(0), 0x0);
72 std::vector<uint32_t>
b(
state.range(0), 0x0);
73 std::vector<uint32_t>
c(
state.range(0), 0x0001000f);
74 for (
auto _ :
state) {
75 std::vector<uint32_t> tmp(
state.range(0));
77 for (
size_t i = 0;
i <
c.size(); ++
i) {
81 for (
size_t i = 0;
i <
a.size(); ++
i) {
82 const uint32_t shift = 16;
83 a[
i] = tmp[
i] >> shift;
84 b[
i] = tmp[
i] & ((1 << shift) - 1);
89BENCHMARK(BM_Array_Write_Copy)->RangeMultiplier(2)->Range(10e4, 2 * 10e6);
91static void BM_Array_Write_Iterator(benchmark::State& state)
93 std::vector<uint32_t>
a(
state.range(0), 0x0);
94 std::vector<uint32_t>
b(
state.range(0), 0x0);
95 std::vector<uint32_t>
c(
state.range(0), 0x0001000f);
97 for (
auto _ :
state) {
98 auto writeOP = [](
auto iterA,
auto iterB, uint32_t
value) ->
void {
99 const uint32_t shift = 16;
100 *iterA =
value >> shift;
101 *iterB =
value & ((1 << shift) - 1);
106 for (
auto iter =
c.begin(); iter !=
c.end(); ++iter) {
113BENCHMARK(BM_Array_Write_Iterator)->RangeMultiplier(2)->Range(10e4, 2 * 10e6);
BENCHMARK(BM_Array_Read_Copy) -> RangeMultiplier(2) ->Range(10e4, 2 *10e6)
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * value
GLboolean GLboolean GLboolean GLboolean a
public interface for rANS iterators.
static auto makeIter(iterA_T iterA, iterB_T iterB, F functor) -> CombinedOutputIterator< input_T, iterA_T, iterB_T, F >