diff options
author | Tor Egge <Tor.Egge@online.no> | 2021-08-18 18:11:28 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2021-08-18 18:11:28 +0200 |
commit | 7a9aa98435d0140c50eaa8544397aa597aad18d6 (patch) | |
tree | a56a083fd28dcd911656cc0b44b0469f5aa894dd /searchlib | |
parent | 996ca504122c999dd0adddf88ab63a37af109161 (diff) |
Factor out common code.
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp b/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp index 51f025becb3..ca5f522457a 100644 --- a/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp +++ b/searchlib/src/vespa/searchlib/tensor/hnsw_index.cpp @@ -503,36 +503,40 @@ HnswIndex::compact_link_arrays(bool compact_memory, bool compact_address_space) } } +namespace { + bool -HnswIndex::consider_compact_level_arrays(const CompactionStrategy& compaction_strategy) +consider_compact_arrays(const CompactionStrategy& compaction_strategy, vespalib::MemoryUsage& memory_usage, vespalib::AddressSpace& address_space_usage, std::function<void(bool,bool)> compact_arrays) { - size_t used_bytes = _cached_level_arrays_memory_usage.usedBytes(); - size_t dead_bytes = _cached_level_arrays_memory_usage.deadBytes(); + size_t used_bytes = memory_usage.usedBytes(); + size_t dead_bytes = memory_usage.deadBytes(); bool compact_memory = compaction_strategy.should_compact_memory(used_bytes, dead_bytes); - size_t used_address_space = _cached_level_arrays_address_space_usage.used(); - size_t dead_address_space = _cached_level_arrays_address_space_usage.dead(); + size_t used_address_space = address_space_usage.used(); + size_t dead_address_space = address_space_usage.dead(); bool compact_address_space = compaction_strategy.should_compact_address_space(used_address_space, dead_address_space); if (compact_memory || compact_address_space) { - compact_level_arrays(compact_memory, compact_address_space); + compact_arrays(compact_memory, compact_address_space); return true; } return false; } +} + +bool +HnswIndex::consider_compact_level_arrays(const CompactionStrategy& compaction_strategy) +{ + return consider_compact_arrays(compaction_strategy, _cached_level_arrays_memory_usage, _cached_level_arrays_address_space_usage, + [this](bool compact_memory, bool compact_address_space) + { compact_level_arrays(compact_memory, compact_address_space); }); +} + bool HnswIndex::consider_compact_link_arrays(const CompactionStrategy& compaction_strategy) { - size_t used_bytes = _cached_link_arrays_memory_usage.usedBytes(); - size_t dead_bytes = _cached_link_arrays_memory_usage.deadBytes(); - bool compact_memory = compaction_strategy.should_compact_memory(used_bytes, dead_bytes); - size_t used_address_space = _cached_level_arrays_address_space_usage.used(); - size_t dead_address_space = _cached_level_arrays_address_space_usage.dead(); - bool compact_address_space = compaction_strategy.should_compact_address_space(used_address_space, dead_address_space); - if (compact_memory || compact_address_space) { - compact_link_arrays(compact_memory, compact_address_space); - return true; - } - return false; + return consider_compact_arrays(compaction_strategy, _cached_link_arrays_memory_usage, _cached_link_arrays_address_space_usage, + [this](bool compact_memory, bool compact_address_space) + { compact_link_arrays(compact_memory, compact_address_space); }); } bool |