14#include <benchmark/benchmark.h>
19static void BM_TableBuilderOverhead(benchmark::State& state)
23 for (
auto _ :
state) {
25 [[maybe_unused]]
auto rowWriter = builder.
persist<
float,
float,
float>({
"x",
"y",
"z"});
32static void BM_TableBuilderScalar(benchmark::State& state)
35 for (
auto _ :
state) {
37 auto rowWriter = builder.
persist<
float>({
"x"});
38 for (
auto i = 0;
i <
state.range(0); ++
i) {
46BENCHMARK(BM_TableBuilderScalar)->Range(8, 8 << 16);
48static void BM_TableBuilderScalarReserved(benchmark::State& state)
51 for (
auto _ :
state) {
53 auto rowWriter = builder.
persist<
float>({
"x"});
55 for (
auto i = 0;
i <
state.range(0); ++
i) {
62BENCHMARK(BM_TableBuilderScalarReserved)->Arg(1 << 21);
63BENCHMARK(BM_TableBuilderScalarReserved)->Range(8, 8 << 16);
65static void BM_TableBuilderSimple(benchmark::State& state)
68 for (
auto _ :
state) {
70 auto rowWriter = builder.
persist<float, float,
float>({
"x",
"y",
"z"});
71 for (
auto i = 0;
i <
state.range(0); ++
i) {
72 rowWriter(0, 0.f, 0.f, 0.f);
80static void BM_TableBuilderSimple2(benchmark::State& state)
83 for (
auto _ :
state) {
85 auto rowWriter = builder.
persist<float, float,
float>({
"x",
"y",
"z"});
86 for (
auto i = 0;
i <
state.range(0); ++
i) {
87 rowWriter(0, 0.f, 0.f, 0.f);
93BENCHMARK(BM_TableBuilderSimple2)->Range(8, 8 << 16);
104static void BM_TableBuilderSoA(benchmark::State& state)
107 for (
auto _ :
state) {
110 for (
auto i = 0;
i <
state.range(0); ++
i) {
111 rowWriter(0, 0.f, 0.f, 0.f);
119static void BM_TableBuilderComplex(benchmark::State& state)
122 for (
auto _ :
state) {
124 auto rowWriter = builder.
persist<
int, float, std::string,
bool>({
"x",
"y",
"s",
"b"});
125 for (
auto i = 0;
i <
state.range(0); ++
i) {
126 rowWriter(0, 0, 0.,
"foo",
true);
#define DECLARE_SOA_COLUMN(_Name_, _Getter_, _Type_)
BENCHMARK(BM_TableBuilderOverhead)
auto reserve(o2::framework::pack< ARGS... > &&, int s)
auto persist(std::array< char const *, sizeof...(ARGS)+1 > const &columnNames)
std::shared_ptr< arrow::Table > finalize()
GLdouble GLdouble GLdouble z
Defining PrimaryVertex explicitly as messageable.
FIXME: do not use data model tables.