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..