Avoid allocating a zero-bytes vector each search time (#22219)

Signed-off-by: yah01 <yang.cen@zilliz.com>
pull/22358/head
yah01 2023-02-23 10:37:46 +08:00 committed by GitHub
parent 7e19a924b7
commit 3e9d497157
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 2 deletions

View File

@ -464,11 +464,13 @@ SegmentSealedImpl::bulk_subscript_impl(
int64_t element_sizeof, const void* src_raw, const int64_t* seg_offsets, int64_t count, void* dst_raw) {
auto src_vec = reinterpret_cast<const char*>(src_raw);
auto dst_vec = reinterpret_cast<char*>(dst_raw);
std::vector<char> none(element_sizeof, 0);
for (int64_t i = 0; i < count; ++i) {
auto offset = seg_offsets[i];
auto dst = dst_vec + i * element_sizeof;
const char* src = (offset == INVALID_SEG_OFFSET ? none.data() : (src_vec + element_sizeof * offset));
const char* src = (offset == INVALID_SEG_OFFSET ? nullptr : (src_vec + element_sizeof * offset));
if (!src) {
continue;
}
memcpy(dst, src, element_sizeof);
}
}