From ec9031dcf8fb979ecf8a6eb97ce00b0fbed9a85c Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Sun, 5 Jan 2025 20:43:55 +0200 Subject: [PATCH] Improve JavaScript benchmarks --- bindings/wasm/perf/perf-better-sqlite3.js | 29 +++++++++++++++++++---- bindings/wasm/perf/perf-limbo.js | 27 ++++++++++++++++++--- 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/bindings/wasm/perf/perf-better-sqlite3.js b/bindings/wasm/perf/perf-better-sqlite3.js index 0d1b96318..61e47355c 100644 --- a/bindings/wasm/perf/perf-better-sqlite3.js +++ b/bindings/wasm/perf/perf-better-sqlite3.js @@ -2,13 +2,34 @@ import { run, bench, group, baseline } from 'mitata'; import Database from 'better-sqlite3'; -const db = new Database('limbo.db'); +const db = new Database('better-sqlite3.db'); -const stmt = db.prepare("SELECT 1"); +db.exec('CREATE TABLE t (x)'); +db.exec('INSERT INTO t VALUES (1)'); +db.exec('INSERT INTO t VALUES (2)'); +db.exec('INSERT INTO t VALUES (3)'); -group('Statement', () => { +group('SQL queries [all()]', () => { + const stmt1 = db.prepare("SELECT 1"); bench('SELECT 1', () => { - stmt.all(); + stmt1.all(); + }); + const stmt2 = db.prepare("SELECT * FROM t"); + bench('SELECT * FROM t', () => { + stmt2.all(); + }); +}); + +group('SQL queries [iterate()]', () => { + const stmt1 = db.prepare("SELECT 1"); + const it1 = stmt1.iterate(); + bench('SELECT 1', () => { + it1.next(); + }); + const stmt2 = db.prepare("SELECT * FROM t"); + const it2 = stmt2.iterate(); + bench('SELECT * FROM t', () => { + it2.next(); }); }); diff --git a/bindings/wasm/perf/perf-limbo.js b/bindings/wasm/perf/perf-limbo.js index 7ab36160f..33df8477e 100644 --- a/bindings/wasm/perf/perf-limbo.js +++ b/bindings/wasm/perf/perf-limbo.js @@ -4,11 +4,32 @@ import { Database } from 'limbo-wasm'; const db = new Database('limbo.db'); -const stmt = db.prepare("SELECT 1"); +db.exec('CREATE TABLE t (x)'); +db.exec('INSERT INTO t VALUES (1)'); +db.exec('INSERT INTO t VALUES (2)'); +db.exec('INSERT INTO t VALUES (3)'); -group('Statement', () => { +group('SQL queries [all()]', () => { + const stmt1 = db.prepare("SELECT 1"); bench('SELECT 1', () => { - stmt.all(); + stmt1.all(); + }); + const stmt2 = db.prepare("SELECT * FROM t"); + bench('SELECT * FROM t', () => { + stmt2.all(); + }); +}); + +group('SQL queries [iterate()]', () => { + const stmt1 = db.prepare("SELECT 1"); + const it1 = stmt1.iterate(); + bench('SELECT 1', () => { + it1.next(); + }); + const stmt2 = db.prepare("SELECT * FROM t"); + const it2 = stmt2.iterate(); + bench('SELECT * FROM t', () => { + it2.next(); }); });