import { bench, describe } from 'vitest' import { InMemoryKVDriver } from '../src/kv/memory.js' import { KVStorage } from '../src/kv/node.js' async function populated(n: number) { const db = new KVStorage(new InMemoryKVDriver()) const users = db.child('users') const batch: [string, { name: string; n: number }][] = [] for (let i = 0; i < n; i++) batch.push([`u${i}`, { name: `user ${i}`, n: i }]) await users.setMany(batch) return users } for (const n of [10_000, 100_000]) { const users = await populated(n) const keys = Array.from({ length: 100 }, (_, i) => `u${(i * 7919) % n}`) let i = 0 describe(`KV @ ${n / 1000}k keys`, () => { bench('get', async () => { await users.get(`u${i++ % n}`) }) bench('set (overwrite)', async () => { await users.set(`u${i++ % n}`, { name: 'x', n: i }) }) bench('getMany x100', async () => { await users.getMany(keys) }) }) }