test(benchmark): print a readable summary table
CI / policy (push) Successful in 7s
CI / validate (push) Successful in 1m5s
CI / build (push) Successful in 1m38s
CI / policy (pull_request) Successful in 10s
CI / security (push) Successful in 1m19s
CI / test (push) Successful in 3m29s
CI / validate (pull_request) Successful in 1m42s
CI / benchmark (push) Successful in 4m13s
CI / security (pull_request) Successful in 56s
CI / build (pull_request) Successful in 1m42s
CI / test (pull_request) Successful in 3m8s
CI / images (push) Successful in 1m15s
CI / required (push) Successful in 1s
CI / benchmark (pull_request) Successful in 3m37s
CI / images (pull_request) Successful in 1m11s
CI / required (pull_request) Successful in 1s
CI / policy (push) Successful in 7s
CI / validate (push) Successful in 1m5s
CI / build (push) Successful in 1m38s
CI / policy (pull_request) Successful in 10s
CI / security (push) Successful in 1m19s
CI / test (push) Successful in 3m29s
CI / validate (pull_request) Successful in 1m42s
CI / benchmark (push) Successful in 4m13s
CI / security (pull_request) Successful in 56s
CI / build (pull_request) Successful in 1m42s
CI / test (pull_request) Successful in 3m8s
CI / images (push) Successful in 1m15s
CI / required (push) Successful in 1s
CI / benchmark (pull_request) Successful in 3m37s
CI / images (pull_request) Successful in 1m11s
CI / required (pull_request) Successful in 1s
Print the calibration and a Markdown table with one aligned row per scenario as soon as it finishes: both planning times, mean, budget, ratio, multiplier, outcome, placements, determinism and budget status. Write directly to stdout so Vitest adds no per-line headers. The complete TSV report still follows the table. Refs #281, #285 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cfdb28c90a
commit
3bbe989eca
4 files changed
+127
-28
No files matched your search
@@ -3,10 +3,10 @@ import { calculatePlanningAsyncInternal } from '../services/frozen-engine/leave-
|
||||
import { createPlanningCalculation } from '../services/leave-planner.service';
|
||||
import {
|
||||
BENCHMARK_BUDGET_MULTIPLIERS,
|
||||
BENCHMARK_REPORT_HEADER,
|
||||
benchmarkReport,
|
||||
benchmarkReportRows,
|
||||
benchmarkScenarios,
|
||||
benchmarkSummaryHeader,
|
||||
benchmarkSummaryRow,
|
||||
budgetViolations,
|
||||
runLeavePlannerBenchmark,
|
||||
} from './leave-planner-benchmark';
|
||||
@@ -78,10 +78,15 @@ describe('leave planner benchmark protocol', () => {
|
||||
await calculatePlanningAsyncInternal({ ...request, calculationDate: '2024-01-01' });
|
||||
calibrationMs = Math.min(calibrationMs, performance.now() - start);
|
||||
}
|
||||
console.info(`calibration\tfrozen two years best of 3\t${calibrationMs.toFixed(1)}`);
|
||||
console.info(BENCHMARK_REPORT_HEADER);
|
||||
// Direct writes skip Vitest's per-call "stdout |" headers and appear immediately.
|
||||
const print = (text: string) => process.stdout.write(`${text}\n`);
|
||||
print(
|
||||
`\nCalibration: frozen engine on "two years", best of 3 = ${calibrationMs.toFixed(1)} ms` +
|
||||
'\nBudget = limit x calibration; ratio = mean / calibration.\n',
|
||||
);
|
||||
print(benchmarkSummaryHeader());
|
||||
const measurements = await runLeavePlannerBenchmark(2, (rows) =>
|
||||
console.info(benchmarkReportRows(rows)),
|
||||
print(benchmarkSummaryRow(rows, calibrationMs)),
|
||||
);
|
||||
for (const [name, placements] of [
|
||||
['two years', 60],
|
||||
@@ -114,7 +119,7 @@ describe('leave planner benchmark protocol', () => {
|
||||
loaded[0].preparationMs + loaded[0].planningMs,
|
||||
);
|
||||
const report = benchmarkReport(measurements);
|
||||
console.info(report);
|
||||
print(`\nRaw report (TSV):\n${report}\n`);
|
||||
expect(report.split('\n')).toHaveLength(15);
|
||||
expect(report).toContain('planning_ms\twall_ms');
|
||||
expect(report).toContain('planning_work_ms\tpeak_main_thread_heap_bytes');
|
||||
|
||||
Reference in new issue
Block a user