From 21e5e7c95a99f6c88393337ce209458b64f8d579 Mon Sep 17 00:00:00 2001 From: beliefer Date: Wed, 17 Sep 2025 20:53:27 +0800 Subject: [PATCH] [DRAFT] Refactor parseScanSplitInfo --- cpp/velox/compute/VeloxPlanConverter.cc | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/cpp/velox/compute/VeloxPlanConverter.cc b/cpp/velox/compute/VeloxPlanConverter.cc index 5529ffb90ae6..5dee15689d63 100644 --- a/cpp/velox/compute/VeloxPlanConverter.cc +++ b/cpp/velox/compute/VeloxPlanConverter.cc @@ -46,27 +46,31 @@ std::shared_ptr parseScanSplitInfo( using SubstraitFileFormatCase = ::substrait::ReadRel_LocalFiles_FileOrFiles::FileFormatCase; auto splitInfo = std::make_shared(); - splitInfo->paths.reserve(fileList.size()); - splitInfo->starts.reserve(fileList.size()); - splitInfo->lengths.reserve(fileList.size()); - splitInfo->partitionColumns.reserve(fileList.size()); - splitInfo->properties.reserve(fileList.size()); - splitInfo->metadataColumns.reserve(fileList.size()); + const size_t fileCount = fileList.size(); + + splitInfo->paths.reserve(fileCount); + splitInfo->starts.reserve(fileCount); + splitInfo->lengths.reserve(fileCount); + splitInfo->partitionColumns.reserve(fileCount); + splitInfo->properties.reserve(fileCount); + splitInfo->metadataColumns.reserve(fileCount); for (const auto& file : fileList) { // Expect all Partitions share the same index. splitInfo->partitionIndex = file.partition_index(); std::unordered_map partitionColumnMap; + partitionColumnMap.reserve(file.partition_columns_size()); for (const auto& partitionColumn : file.partition_columns()) { - partitionColumnMap[partitionColumn.key()] = partitionColumn.value(); + partitionColumnMap.emplace(partitionColumn.key(), partitionColumn.value()); } - splitInfo->partitionColumns.emplace_back(partitionColumnMap); + splitInfo->partitionColumns.emplace_back(std::move(partitionColumnMap)); std::unordered_map metadataColumnMap; + metadataColumnMap.reserve(file.metadata_columns_size()); for (const auto& metadataColumn : file.metadata_columns()) { - metadataColumnMap[metadataColumn.key()] = metadataColumn.value(); + metadataColumnMap.emplace(metadataColumn.key(), metadataColumn.value()); } - splitInfo->metadataColumns.emplace_back(metadataColumnMap); + splitInfo->metadataColumns.emplace_back(std::move(metadataColumnMap)); splitInfo->paths.emplace_back(file.uri_file()); splitInfo->starts.emplace_back(file.start());