Skip to content

Commit 86a14fc

Browse files
committed
RNTupleDS LHCB bench: parameterize fraction of events read
And measure runtimes for 25%, 50% and 100% of the events.
1 parent f5588e0 commit 86a14fc

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

root/tree/dataframe/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ if(rootbench-datafiles)
5656
if (ROOT_root7_FOUND)
5757
RB_ADD_GBENCHMARK(RNTupleDSBenchmarks
5858
RNTupleDSBenchmarks.cxx
59-
LIBRARIES Core Hist RIO TreePlayer ROOTDataFrame
59+
LIBRARIES Core Hist RIO TreePlayer ROOTNTuple ROOTDataFrame
6060
DOWNLOAD_DATAFILES B2HHH~none.ntuple
6161
LABEL short)
6262
endif()

root/tree/dataframe/RNTupleDSBenchmarks.cxx

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include <ROOT/RNTuple.hxx>
12
#include <ROOT/RNTupleDS.hxx>
23
#include <ROOT/RDataFrame.hxx>
34

@@ -22,7 +23,8 @@ double GetKE(double px, double py, double pz)
2223
return sqrt(p2 + kKaonMassMeV*kKaonMassMeV);
2324
}
2425

25-
auto Dataframe(ROOT::RDataFrame &frame)
26+
template <typename DF>
27+
auto Dataframe(DF &frame)
2628
{
2729
auto fn_muon_cut = [](int is_muon) { return !is_muon; };
2830
auto fn_k_cut = [](double prob_k) { return prob_k > 0.5; };
@@ -48,21 +50,30 @@ auto Dataframe(ROOT::RDataFrame &frame)
4850
.Define("K3_E", GetKE, {"H3_PX", "H3_PY", "H3_PZ"})
4951
.Define("B_E", fn_sum, {"K1_E", "K2_E", "K3_E"})
5052
.Define("B_m", fn_mass, {"B_E", "B_P2"});
51-
auto hMass = df_mass.Histo1D<double>({"B_mass", "", 500, 5050, 5500}, "B_m");
53+
auto hMass = df_mass.template Histo1D<double>({"B_mass", "", 500, 5050, 5500}, "B_m");
5254

5355
return hMass;
5456
}
5557
} // namespace
5658

5759
static void BM_RNTupleDS_LHCB(benchmark::State &state)
5860
{
61+
auto model = ROOT::Experimental::RNTupleModel::Create();
62+
auto ntuple =
63+
ROOT::Experimental::RNTupleReader::Open(std::move(model), "DecayTree", RB::GetDataDir() + "/B2HHH~none.ntuple");
64+
const Long64_t nEntries = ntuple->GetNEntries() * (state.range(0) / 100.);
65+
5966
auto df = ROOT::Experimental::MakeNTupleDataFrame("DecayTree", RB::GetDataDir() + "/B2HHH~none.ntuple");
60-
auto h_ptr = Dataframe(df);
67+
auto df2 = df.Range(nEntries);
68+
auto h_ptr = Dataframe(df2);
6169
for (auto _ : state)
6270
*h_ptr;
63-
RB::Ensure(int(h_ptr->GetMean()) == 5262);
64-
RB::Ensure(int(h_ptr->GetEntries()) == 23895);
71+
if (state.range(0) == 100) {
72+
// some sanity checks
73+
RB::Ensure(int(h_ptr->GetMean()) == 5262);
74+
RB::Ensure(int(h_ptr->GetEntries()) == 23895);
75+
}
6576
}
66-
BENCHMARK(BM_RNTupleDS_LHCB)->Unit(benchmark::kMicrosecond)->Iterations(1);
77+
BENCHMARK(BM_RNTupleDS_LHCB)->Unit(benchmark::kMicrosecond)->Iterations(1)->Arg(100)->Arg(50)->Arg(25);
6778

6879
BENCHMARK_MAIN();

0 commit comments

Comments
 (0)