insert_n_rows = {
db.exec([
"DROP TABLE IF EXISTS insert_n_rows;",
"CREATE TABLE insert_n_rows (a PRIMARY KEY);",
"VACUUM;"
]);
const stmt = db.prepare("INSERT INTO insert_n_rows VALUES (?)");
let a = 0;
const trials = [1, 10, 100, 1_000, 5_000, 10_000];
const sqliteNoTx = [];
const sqliteTx = [];
const js = [];
const jsPersistentTreap = [];
const comp = (l, r) => l.a - r.a;
for (const trial of trials) {
const arr = [];
let pTreap = new PersistentTreap(comp);
sqliteNoTx.push({
size: trial,
time: bench(() => {
for (let i = 0; i < trial; ++i) {
stmt.bind(1, ++a).stepReset();
}
})
});
sqliteTx.push({
size: trial,
time: bench(() => {
db.transaction(() => {
for (let i = 0; i < trial; ++i) {
stmt.bind(1, ++a).stepReset();
}
});
})
});
js.push({
size: trial,
time: bench(() => {
for (let i = 0; i < trial; ++i) {
arr.push({ a: ++a });
}
})
});
jsPersistentTreap.push({
size: trial,
time: bench(() => {
for (let i = 0; i < trial; ++i) {
pTreap = pTreap.add({ a: ++a });
}
})
});
}
stmt.finalize();
return {
sqliteNoTx,
sqliteTx,
js,
jsPersistentTreap
};
}