Skip to content

Commit 7bb9665

Browse files
committed
Added track delete time to bm
1 parent 32fe613 commit 7bb9665

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

tests/benchmark/bm_common.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,19 +253,26 @@ void BM_VecSimCommon<index_type_t>::TopK_HNSW_DISK_DeleteLabel(benchmark::State
253253
std::uniform_int_distribution<size_t> dist(0, stratum_size - 1);
254254
labelType label = stratum_start + dist(rng);
255255
deleted_labels.push_back(label);
256-
// Use deleteVector instead of markDelete - this processes batch and repairs graph
257-
disk_index->deleteVector(label);
258256
}
259257

258+
// Measure the time spent on deleteVector calls (includes batch merge every 10 vectors)
259+
auto delete_start = std::chrono::high_resolution_clock::now();
260+
for (const auto &label : deleted_labels) {
261+
disk_index->deleteVector(label);
262+
}
260263
// Force flush any pending deletes to ensure graph is fully repaired
261264
disk_index->flushDeleteBatch();
265+
auto delete_end = std::chrono::high_resolution_clock::now();
266+
double delete_time_ms = std::chrono::duration<double, std::milli>(delete_end - delete_start).count();
262267

263268
// Create hash set for O(1) lookup during ground truth filtering
264269
// With up to 50K deleted labels, this avoids O(n) linear search overhead
265270
std::unordered_set<labelType> deleted_labels_set(deleted_labels.begin(), deleted_labels.end());
266271

267272
size_t total_deleted = deleted_labels.size();
268273
st.counters["num_deleted"] = total_deleted;
274+
st.counters["delete_time_ms"] = delete_time_ms;
275+
st.counters["delete_time_per_vector_ms"] = delete_time_ms / total_deleted;
269276

270277
// Get DB statistics before benchmark
271278
auto stats = disk_index->getDBStatistics();

0 commit comments

Comments
 (0)