## BaraDB Benchmarks — performance tests for all engines import std/monotimes import std/tables import std/random import std/strutils import ../src/barabadb/storage/lsm import ../src/barabadb/storage/btree import ../src/barabadb/vector/engine as vengine import ../src/barabadb/vector/simd import ../src/barabadb/fts/engine as fts import ../src/barabadb/graph/engine as gengine proc elapsed(start: MonoTime): float64 = let ns = float64((getMonoTime() - start).ticks) return ns / 1_000_000_000.0 proc formatOps(ops: int, secs: float64): string = let rate = float64(ops) / secs if rate > 1_000_000: return $(rate / 1_000_000).formatFloat(ffDecimal, 2) & "M ops/s" elif rate > 1_000: return $(rate / 1_000).formatFloat(ffDecimal, 2) & "K ops/s" else: return $rate.formatFloat(ffDecimal, 2) & " ops/s" proc benchLSMTree() = echo "=== LSM-Tree Storage ===" var db = newLSMTree("/tmp/baradb_bench_lsm") # Write benchmark let n = 100_000 let start = getMonoTime() for i in 0.. 0: inc found let getTime = elapsed(getStart) echo " Get ", n, " keys: ", getTime.formatFloat(ffDecimal, 3), "s (", formatOps(n, getTime), ") (", found, " found)" # Scan benchmark let scanStart = getMonoTime() let scanResults = btree.scan("key_1000", "key_2000") let scanTime = elapsed(scanStart) echo " Scan 1000 range: ", scanTime.formatFloat(ffDecimal, 6), "s (", scanResults.len, " results)" proc benchVectorSearch() = echo "=== Vector Engine (HNSW) ===" let dim = 128 let n = 10_000 var idx = vengine.newHNSWIndex(dim) # Insert benchmark randomize(42) let start = getMonoTime() for i in 0..