61 lines
1.8 KiB
JavaScript
61 lines
1.8 KiB
JavaScript
const path = require('path');
|
|
const {
|
|
config,
|
|
createClient,
|
|
ensureDir,
|
|
executeMeasured,
|
|
loadQueries,
|
|
resultsDir,
|
|
summarizeRows,
|
|
writeCsv,
|
|
writeJson
|
|
} = require('./benchmark-lib');
|
|
|
|
const mode = process.env.BENCHMARK_MODE || 'baseline';
|
|
const rawName = mode === 'optimized' ? 'optimized_raw.csv' : 'baseline_raw.csv';
|
|
const summaryName = mode === 'optimized' ? 'optimized_summary.csv' : 'baseline_summary.csv';
|
|
const jsonName = mode === 'optimized' ? 'optimized.json' : 'baseline.json';
|
|
|
|
const warmups = Number.parseInt(process.env.BENCHMARK_WARMUPS || config.warmupRepetitions, 10);
|
|
const repetitions = Number.parseInt(process.env.BENCHMARK_REPETITIONS || config.measuredRepetitions, 10);
|
|
|
|
const main = async () => {
|
|
ensureDir(resultsDir);
|
|
const queries = loadQueries();
|
|
const client = await createClient();
|
|
const raw = [];
|
|
|
|
try {
|
|
for (const query of queries) {
|
|
for (let i = 1; i <= warmups; i += 1) {
|
|
await executeMeasured(client, query, i, `${mode}_warmup`);
|
|
}
|
|
for (let i = 1; i <= repetitions; i += 1) {
|
|
const row = await executeMeasured(client, query, i, mode);
|
|
raw.push(row);
|
|
process.stdout.write(`${mode} ${query.id} ${i}/${repetitions} ${row.success ? 'ok' : 'fail'} ${row.endpoint_total_ms.toFixed(2)}ms\n`);
|
|
}
|
|
}
|
|
} finally {
|
|
await client.end();
|
|
}
|
|
|
|
const summary = summarizeRows(raw, ['phase', 'query_id', 'query_name', 'query_group']);
|
|
writeCsv(path.join(resultsDir, rawName), raw);
|
|
writeCsv(path.join(resultsDir, summaryName), summary);
|
|
writeJson(path.join(resultsDir, jsonName), {
|
|
generatedAt: new Date().toISOString(),
|
|
mode,
|
|
warmups,
|
|
repetitions,
|
|
expectedMeasuredOperations: queries.length * repetitions,
|
|
measuredOperations: raw.length,
|
|
summary
|
|
});
|
|
};
|
|
|
|
main().catch((error) => {
|
|
console.error(error);
|
|
process.exit(1);
|
|
});
|