From 3203ce16542ef3f993e548a8e2e168c6c640530a Mon Sep 17 00:00:00 2001 From: yah01 Date: Mon, 11 Sep 2023 21:31:18 +0800 Subject: [PATCH] Reduce copy while retrieving primary keys (#26616) Signed-off-by: yah01 --- internal/core/src/segcore/SegmentGrowingImpl.cpp | 5 +++-- internal/core/src/segcore/SegmentSealedImpl.cpp | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/internal/core/src/segcore/SegmentGrowingImpl.cpp b/internal/core/src/segcore/SegmentGrowingImpl.cpp index c584c6ca2f..7094f90e6f 100644 --- a/internal/core/src/segcore/SegmentGrowingImpl.cpp +++ b/internal/core/src/segcore/SegmentGrowingImpl.cpp @@ -513,7 +513,8 @@ SegmentGrowingImpl::search_ids(const IdArray& id_array, auto res_id_arr = std::make_unique(); std::vector res_offsets; - for (auto pk : pks) { + res_offsets.reserve(pks.size()); + for (auto& pk : pks) { auto segOffsets = insert_record_.search_pk(pk, timestamp); for (auto offset : segOffsets) { switch (data_type) { @@ -524,7 +525,7 @@ SegmentGrowingImpl::search_ids(const IdArray& id_array, } case DataType::VARCHAR: { res_id_arr->mutable_str_id()->add_data( - std::get(pk)); + std::get(std::move(pk))); break; } default: { diff --git a/internal/core/src/segcore/SegmentSealedImpl.cpp b/internal/core/src/segcore/SegmentSealedImpl.cpp index b5baa6a5b8..b4aa974a11 100644 --- a/internal/core/src/segcore/SegmentSealedImpl.cpp +++ b/internal/core/src/segcore/SegmentSealedImpl.cpp @@ -956,7 +956,8 @@ SegmentSealedImpl::search_ids(const IdArray& id_array, auto res_id_arr = std::make_unique(); std::vector res_offsets; - for (auto pk : pks) { + res_offsets.reserve(pks.size()); + for (auto& pk : pks) { auto segOffsets = insert_record_.search_pk(pk, timestamp); for (auto offset : segOffsets) { switch (data_type) { @@ -967,7 +968,7 @@ SegmentSealedImpl::search_ids(const IdArray& id_array, } case DataType::VARCHAR: { res_id_arr->mutable_str_id()->add_data( - std::get(pk)); + std::get(std::move(pk))); break; } default: {