From 5b514c00c58adb87db3b1e8e41e5c3b8f537e8ec Mon Sep 17 00:00:00 2001 From: munna0908 Date: Thu, 27 Mar 2025 00:24:40 +0530 Subject: [PATCH] benchmark batch deletes --- tests/benchmark_deletes.nim | 132 ++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 tests/benchmark_deletes.nim diff --git a/tests/benchmark_deletes.nim b/tests/benchmark_deletes.nim new file mode 100644 index 0000000..940e09f --- /dev/null +++ b/tests/benchmark_deletes.nim @@ -0,0 +1,132 @@ +import os, times, strutils, strformat, random +import ../leveldbstatic as leveldb + +proc benchmarkIndividualDeletes(db: LevelDb, numKeys: int): float = + # Insert test data + for i in 1..numKeys: + let key = "key_" & $i + let value = "value_" & $i + db.put(key, value) + + # Benchmark individual deletes + let startTime = cpuTime() + for i in 1..numKeys: + let key = "key_" & $i + db.delete(key) + let endTime = cpuTime() + + return endTime - startTime + +proc benchmarkBatchDeletes(db: LevelDb, numKeys: int): float = + # Insert test data + for i in 1..numKeys: + let key = "key_" & $i + let value = "value_" & $i + db.put(key, value) + + # Benchmark batch deletes + let startTime = cpuTime() + let batch = newBatch() + for i in 1..numKeys: + let key = "key_" & $i + batch.delete(key) + db.write(batch) + let endTime = cpuTime() + + return endTime - startTime + +proc benchmarkRandomAccessIndividualDeletes(db: LevelDb, numKeys: int): float = + # Insert test data + for i in 1..numKeys: + let key = "key_" & $i + let value = "value_" & $i + db.put(key, value) + + # Create a randomized sequence of keys to delete + var keys = newSeq[int](numKeys) + for i in 0..