mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 18:25:13 +08:00
Rename the DatabaseSync and StatementSync classes to Database and Statement, and the internal DatabaseSyncLimits helper to DatabaseLimits. The old names are kept as aliases of the new classes and are Documentation-only deprecated (DEP0210, DEP0211). Assisted-by: Claude Code Signed-off-by: Guilherme Araújo <arauujogui@gmail.com> PR-URL: https://github.com/nodejs/node/pull/65988 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
63 lines
1.9 KiB
JavaScript
63 lines
1.9 KiB
JavaScript
'use strict';
|
|
const common = require('../common.js');
|
|
const sqlite = require('node:sqlite');
|
|
const assert = require('assert');
|
|
|
|
const bench = common.createBenchmark(main, {
|
|
n: [1e5],
|
|
tableSeedSize: [1e5],
|
|
statement: [
|
|
'SELECT 1',
|
|
'SELECT * FROM foo LIMIT 1',
|
|
'SELECT text_column FROM foo LIMIT 1',
|
|
'SELECT text_column, integer_column FROM foo LIMIT 1',
|
|
'SELECT text_column, integer_column, real_column FROM foo LIMIT 1',
|
|
'SELECT text_column, integer_column, real_column, blob_column FROM foo LIMIT 1',
|
|
'SELECT text_8kb_column FROM foo_large LIMIT 1',
|
|
],
|
|
});
|
|
|
|
function main(conf) {
|
|
const db = new sqlite.Database(':memory:');
|
|
|
|
// Create only the necessary table for the benchmark type.
|
|
// If the statement includes 'foo_large', create the foo_large table; otherwise, create the foo table.
|
|
if (conf.statement.includes('foo_large')) {
|
|
db.exec('CREATE TABLE foo_large (text_8kb_column TEXT)');
|
|
const fooLargeInsertStatement = db.prepare(
|
|
'INSERT INTO foo_large (text_8kb_column) VALUES (?)',
|
|
);
|
|
const largeText = 'a'.repeat(8 * 1024);
|
|
for (let i = 0; i < conf.tableSeedSize; i++) {
|
|
fooLargeInsertStatement.run(largeText);
|
|
}
|
|
} else {
|
|
db.exec(
|
|
'CREATE TABLE foo (text_column TEXT, integer_column INTEGER, real_column REAL, blob_column BLOB)',
|
|
);
|
|
const fooInsertStatement = db.prepare(
|
|
'INSERT INTO foo (text_column, integer_column, real_column, blob_column) VALUES (?, ?, ?, ?)',
|
|
);
|
|
|
|
for (let i = 0; i < conf.tableSeedSize; i++) {
|
|
fooInsertStatement.run(
|
|
crypto.randomUUID(),
|
|
Math.floor(Math.random() * 100),
|
|
Math.random(),
|
|
Buffer.from('example blob data'),
|
|
);
|
|
}
|
|
}
|
|
|
|
let i;
|
|
let deadCodeElimination;
|
|
|
|
const stmt = db.prepare(conf.statement);
|
|
|
|
bench.start();
|
|
for (i = 0; i < conf.n; i += 1) deadCodeElimination = stmt.get();
|
|
bench.end(conf.n);
|
|
|
|
assert.ok(deadCodeElimination !== undefined);
|
|
}
|