Skip to content

Commit 53a5818

Browse files
committed
Add patch to print RNTupleMetrics in RDF
1 parent 3bf30c8 commit 53a5818

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

tree/dataframe/inc/ROOT/RNTupleDS.hxx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <ROOT/RDataSource.hxx>
2222
#include <ROOT/RNTupleUtil.hxx>
2323
#include <ROOT/RStringView.hxx>
24+
#include <ROOT/RNTupleMetrics.hxx>
2425

2526
#include <cstdint>
2627
#include <memory>
@@ -55,6 +56,8 @@ class RNTupleDS final : public ROOT::RDF::RDataSource {
5556
std::vector<std::string> fColumnTypes;
5657
std::vector<size_t> fActiveColumns;
5758

59+
ROOT::Experimental::Detail::RNTupleMetrics fMetrics;
60+
5861
unsigned fNSlots = 0;
5962
bool fHasSeenAllRanges = false;
6063

@@ -66,9 +69,7 @@ class RNTupleDS final : public ROOT::RDF::RDataSource {
6669
/// float eta;
6770
/// };
6871
/// AddField will recurse into Jet.pt and Jet.eta and provide the two inner fields as std::vector<float> each.
69-
void AddField(const RNTupleDescriptor &desc,
70-
std::string_view colName,
71-
DescriptorId_t fieldId,
72+
void AddField(const RNTupleDescriptor &desc, std::string_view colName, DescriptorId_t fieldId,
7273
std::vector<DescriptorId_t> skeinIDs);
7374

7475
public:
@@ -93,7 +94,7 @@ protected:
9394
Record_t GetColumnReadersImpl(std::string_view name, const std::type_info &) final;
9495
};
9596

96-
} // ns Experimental
97+
} // namespace Experimental
9798

9899
namespace RDF {
99100
namespace Experimental {
@@ -102,6 +103,6 @@ RDataFrame FromRNTuple(ROOT::Experimental::RNTuple *ntuple);
102103
} // namespace Experimental
103104
} // namespace RDF
104105

105-
} // ns ROOT
106+
} // namespace ROOT
106107

107108
#endif

tree/dataframe/src/RNTupleDS.cxx

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ class RRDFCardinalityField : public ROOT::Experimental::Detail::RFieldBase {
6666
public:
6767
static std::string TypeName() { return "std::size_t"; }
6868
RRDFCardinalityField()
69-
: ROOT::Experimental::Detail::RFieldBase("", TypeName(), ENTupleStructure::kLeaf, false /* isSimple */) {}
69+
: ROOT::Experimental::Detail::RFieldBase("", TypeName(), ENTupleStructure::kLeaf, false /* isSimple */)
70+
{
71+
}
7072
RRDFCardinalityField(RRDFCardinalityField &&other) = default;
7173
RRDFCardinalityField &operator=(RRDFCardinalityField &&other) = default;
7274
~RRDFCardinalityField() = default;
@@ -151,7 +153,10 @@ class RNTupleColumnReader : public ROOT::Detail::RDF::RColumnReaderBase {
151153

152154
} // namespace Internal
153155

154-
RNTupleDS::~RNTupleDS() = default;
156+
RNTupleDS::~RNTupleDS()
157+
{
158+
fMetrics.Print(std::cout);
159+
}
155160

156161
void RNTupleDS::AddField(const RNTupleDescriptor &desc, std::string_view colName, DescriptorId_t fieldId,
157162
std::vector<DescriptorId_t> skeinIDs)
@@ -202,8 +207,8 @@ void RNTupleDS::AddField(const RNTupleDescriptor &desc, std::string_view colName
202207
cardinalityField->SetOnDiskId(fieldId);
203208
fColumnNames.emplace_back("R_rdf_sizeof_" + std::string(colName));
204209
fColumnTypes.emplace_back(cardinalityField->GetType());
205-
auto cardColReader = std::make_unique<ROOT::Experimental::Internal::RNTupleColumnReader>(
206-
std::move(cardinalityField));
210+
auto cardColReader =
211+
std::make_unique<ROOT::Experimental::Internal::RNTupleColumnReader>(std::move(cardinalityField));
207212
fColumnReaderPrototypes.emplace_back(std::move(cardColReader));
208213

209214
for (const auto &f : desc.GetFieldIterable(fieldDesc.GetId())) {
@@ -255,8 +260,8 @@ void RNTupleDS::AddField(const RNTupleDescriptor &desc, std::string_view colName
255260
if (cardinalityField) {
256261
fColumnNames.emplace_back("R_rdf_sizeof_" + std::string(colName));
257262
fColumnTypes.emplace_back(cardinalityField->GetType());
258-
auto cardColReader = std::make_unique<ROOT::Experimental::Internal::RNTupleColumnReader>(
259-
std::move(cardinalityField));
263+
auto cardColReader =
264+
std::make_unique<ROOT::Experimental::Internal::RNTupleColumnReader>(std::move(cardinalityField));
260265
fColumnReaderPrototypes.emplace_back(std::move(cardColReader));
261266
}
262267

@@ -267,9 +272,11 @@ void RNTupleDS::AddField(const RNTupleDescriptor &desc, std::string_view colName
267272
fColumnReaderPrototypes.emplace_back(std::move(valColReader));
268273
}
269274

270-
RNTupleDS::RNTupleDS(std::unique_ptr<Detail::RPageSource> pageSource)
275+
RNTupleDS::RNTupleDS(std::unique_ptr<Detail::RPageSource> pageSource) : fMetrics("RDF")
271276
{
272277
pageSource->Attach();
278+
fMetrics.ObserveMetrics(pageSource->GetMetrics());
279+
fMetrics.Enable();
273280
auto descriptorGuard = pageSource->GetSharedDescriptorGuard();
274281
fSources.emplace_back(std::move(pageSource));
275282

@@ -355,6 +362,7 @@ void RNTupleDS::SetNSlots(unsigned int nSlots)
355362
} // namespace ROOT
356363

357364
ROOT::RDataFrame ROOT::RDF::Experimental::FromRNTuple(std::string_view ntupleName, std::string_view fileName)
365+
358366
{
359367
auto pageSource = ROOT::Experimental::Detail::RPageSource::Create(ntupleName, fileName);
360368
ROOT::RDataFrame rdf(std::make_unique<ROOT::Experimental::RNTupleDS>(std::move(pageSource)));

0 commit comments

Comments
 (0)