node-sqlcipher/bench/insert.bench.js
2025-09-05 10:00:29 -07:00

74 lines
1.4 KiB
JavaScript

import { bench, describe } from 'vitest';
import BDatabase from '@signalapp/better-sqlite3';
import { DatabaseSync as NDatabase } from 'node:sqlite';
import Database from '../dist/index.mjs';
const PREPARE = `
CREATE TABLE t (
a1 INTEGER,
a2 INTEGER,
a3 INTEGER,
b1 TEXT,
b2 TEXT,
b3 TEXT
);
`;
const INSERT = `
INSERT INTO t (a1, a2, a3, b1, b2, b3) VALUES
($a1, $a2, $a3, $b1, $b2, $b3);
`;
const DELETE = 'DELETE FROM t';
describe('INSERT INTO t', () => {
const sdb = new Database(':memory:', { cacheStatements: true });
const bdb = new BDatabase(':memory:');
const ndb = new NDatabase(':memory:');
sdb.exec(PREPARE);
bdb.exec(PREPARE);
ndb.exec(PREPARE);
const sinsert = sdb.prepare(INSERT);
const binsert = bdb.prepare(INSERT);
const ninsert = ndb.prepare(INSERT);
bench(
'@signalapp/sqlcipher',
() => {
sinsert.run({ a1: 1, a2: 2, a3: 3, b1: 'b1', b2: 'b2', b3: 'b3' });
},
{
teardown: () => {
sdb.exec(DELETE);
},
},
);
bench(
'@signalapp/better-sqlite',
() => {
binsert.run({ a1: 1, a2: 2, a3: 3, b1: 'b1', b2: 'b2', b3: 'b3' });
},
{
teardown: () => {
bdb.exec(DELETE);
},
},
);
bench(
'node:sqlite',
() => {
ninsert.run({ a1: 1, a2: 2, a3: 3, b1: 'b1', b2: 'b2', b3: 'b3' });
},
{
teardown: () => {
ndb.exec(DELETE);
},
},
);
});