From 72ad100a9067bde4723ed08d09c1804add19700f Mon Sep 17 00:00:00 2001 From: "shengjun.li" <49774184+shengjun1985@users.noreply.github.com> Date: Thu, 19 Mar 2020 16:16:14 +0800 Subject: [PATCH] modify bitset from deque to vector (#1696) Signed-off-by: shengjun.li --- .../thirdparty/faiss/utils/ConcurrentBitset.cpp | 17 +++++++++++------ .../thirdparty/faiss/utils/ConcurrentBitset.h | 11 +++++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.cpp b/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.cpp index 56ebfcc6..bee43bd6 100644 --- a/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.cpp +++ b/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.cpp @@ -19,12 +19,7 @@ namespace faiss { -ConcurrentBitset::ConcurrentBitset(id_type_t size) : size_(size) { - id_type_t bytes_count = (size >> 3) + 1; - // bitset_.resize(bytes_count, 0); - for (auto i = 0; i < bytes_count; ++i) { - bitset_.emplace_back(0); - } +ConcurrentBitset::ConcurrentBitset(id_type_t size) : size_(size), bitset_((size + 7) >> 3) { } bool @@ -42,4 +37,14 @@ ConcurrentBitset::clear(id_type_t id) { bitset_[id >> 3].fetch_and(~(0x1 << (id & 0x7))); } +ConcurrentBitset::id_type_t +ConcurrentBitset::size() { + return size_; +} + +const unsigned char* +ConcurrentBitset::bitset() { + return reinterpret_cast(bitset_.data()); +} + } // namespace faiss diff --git a/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.h b/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.h index 8e7e04b7..fff7752c 100644 --- a/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.h +++ b/core/src/index/thirdparty/faiss/utils/ConcurrentBitset.h @@ -19,7 +19,7 @@ #include #include -#include +#include namespace faiss { @@ -42,9 +42,16 @@ class ConcurrentBitset { void clear(id_type_t id); + id_type_t + size(); + + const unsigned char* + bitset(); + private: - std::deque> bitset_; id_type_t size_; + std::vector> bitset_; + }; using ConcurrentBitsetPtr = std::shared_ptr; -- GitLab