From 0826e9a6bbafcdb131e639186b8d98d193e902c5 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Mon, 12 May 2025 12:09:23 +0200 Subject: [PATCH] DPL: do not create unneeded statics --- .../Core/include/Framework/TableBuilder.h | 28 ++++++++----------- Framework/Core/src/TableBuilder.cxx | 4 +-- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/Framework/Core/include/Framework/TableBuilder.h b/Framework/Core/include/Framework/TableBuilder.h index 32fe78b852eff..936a8a04d5a5a 100644 --- a/Framework/Core/include/Framework/TableBuilder.h +++ b/Framework/Core/include/Framework/TableBuilder.h @@ -855,7 +855,7 @@ auto makeEmptyTable(const char* name, framework::pack p) } std::shared_ptr spawnerHelper(std::shared_ptr const& fullTable, std::shared_ptr newSchema, size_t nColumns, - expressions::Projector* projectors, std::vector> const& fields, const char* name, std::shared_ptr& projector); + expressions::Projector* projectors, const char* name, std::shared_ptr& projector); /// Expression-based column generator to materialize columns template @@ -867,10 +867,9 @@ auto spawner(std::vector>&& tables, const char* na if (fullTable->num_rows() == 0) { return makeEmptyTable(name, placeholders_pack_t{}); } - static auto fields = o2::soa::createFieldsFromColumns(placeholders_pack_t{}); - static auto new_schema = std::make_shared(fields); + static auto new_schema = std::make_shared(o2::soa::createFieldsFromColumns(placeholders_pack_t{})); - return spawnerHelper(fullTable, new_schema, framework::pack_size(placeholders_pack_t{}), projectors, fields, name, projector); + return spawnerHelper(fullTable, new_schema, framework::pack_size(placeholders_pack_t{}), projectors, name, projector); } template @@ -881,10 +880,9 @@ auto spawner(std::shared_ptr const& fullTable, const char* name, o if (fullTable->num_rows() == 0) { return makeEmptyTable(name, placeholders_pack_t{}); } - static auto fields = o2::soa::createFieldsFromColumns(placeholders_pack_t{}); - static auto new_schema = std::make_shared(fields); + static auto new_schema = std::make_shared(o2::soa::createFieldsFromColumns(placeholders_pack_t{})); - return spawnerHelper(fullTable, new_schema, framework::pack_size(placeholders_pack_t{}), projectors, fields, name, projector); + return spawnerHelper(fullTable, new_schema, framework::pack_size(placeholders_pack_t{}), projectors, name, projector); } template @@ -896,15 +894,15 @@ auto spawner(std::vector>&& tables, const char* na if (fullTable->num_rows() == 0) { return makeEmptyTable(name, expression_pack_t{}); } - static auto fields = o2::soa::createFieldsFromColumns(expression_pack_t{}); - static auto new_schema = std::make_shared(fields); + static auto new_schema = std::make_shared(o2::soa::createFieldsFromColumns(expression_pack_t{})); + auto projectors = [](framework::pack) -> std::array { return {{std::move(C::Projector())...}}; } (expression_pack_t{}); - return spawnerHelper(fullTable, new_schema, framework::pack_size(expression_pack_t{}), projectors.data(), fields, name, projector); + return spawnerHelper(fullTable, new_schema, framework::pack_size(expression_pack_t{}), projectors.data(), name, projector); } template @@ -915,15 +913,14 @@ auto spawner(std::shared_ptr const& fullTable, const char* name, s if (fullTable->num_rows() == 0) { return makeEmptyTable(name, expression_pack_t{}); } - static auto fields = o2::soa::createFieldsFromColumns(expression_pack_t{}); - static auto new_schema = std::make_shared(fields); + static auto new_schema = std::make_shared(o2::soa::createFieldsFromColumns(expression_pack_t{})); auto projectors = [](framework::pack) -> std::array { return {{std::move(C::Projector())...}}; } (expression_pack_t{}); - return spawnerHelper(fullTable, new_schema, framework::pack_size(expression_pack_t{}), projectors.data(), fields, name, projector); + return spawnerHelper(fullTable, new_schema, framework::pack_size(expression_pack_t{}), projectors.data(), name, projector); } template @@ -933,10 +930,9 @@ auto spawner(framework::pack columns, std::vectornum_rows() == 0) { return makeEmptyTable(name, framework::pack{}); } - static auto fields = o2::soa::createFieldsFromColumns(columns); - static auto new_schema = std::make_shared(fields); + static auto new_schema = std::make_shared(o2::soa::createFieldsFromColumns(columns)); std::array projectors{{std::move(C::Projector())...}}; - return spawnerHelper(fullTable, new_schema, sizeof...(C), projectors.data(), fields, name, projector); + return spawnerHelper(fullTable, new_schema, sizeof...(C), projectors.data(), name, projector); } template diff --git a/Framework/Core/src/TableBuilder.cxx b/Framework/Core/src/TableBuilder.cxx index d9827559c2148..eb19f8d3fe642 100644 --- a/Framework/Core/src/TableBuilder.cxx +++ b/Framework/Core/src/TableBuilder.cxx @@ -85,11 +85,11 @@ void TableBuilder::setLabel(const char* label) } std::shared_ptr spawnerHelper(std::shared_ptr const& fullTable, std::shared_ptr newSchema, size_t nColumns, - expressions::Projector* projectors, std::vector> const& fields, const char* name, + expressions::Projector* projectors, const char* name, std::shared_ptr& projector) { if (projector == nullptr) { - projector = framework::expressions::createProjectorHelper(nColumns, projectors, fullTable->schema(), fields); + projector = framework::expressions::createProjectorHelper(nColumns, projectors, fullTable->schema(), newSchema->fields()); } arrow::TableBatchReader reader(*fullTable);