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

71 lines
1.2 KiB
JavaScript

import { Buffer } from 'node:buffer';
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 (
b BLOB
);
`;
const INSERT = `
INSERT INTO t (b) VALUES ($b);
`;
const BLOB = Buffer.alloc(16 * 1024);
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({ b: BLOB });
},
{
teardown: () => {
sdb.exec(DELETE);
},
},
);
bench(
'@signalapp/better-sqlite',
() => {
binsert.run({ b: BLOB });
},
{
teardown: () => {
bdb.exec(DELETE);
},
},
);
bench(
'node:sqlite',
() => {
ninsert.run({ b: BLOB });
},
{
teardown: () => {
ndb.exec(DELETE);
},
},
);
});