Skip to content

Commit 6dbaaf0

Browse files
committed
feat: include suite metadata (name, unit, direction) in benchmark results
- writeResults now accepts SuiteMeta with name, unit, and direction - Results JSON includes suite field for the visualization dashboard to ingest - Mounting benchmark outputs unit: ms, direction: smaller
1 parent 33ae801 commit 6dbaaf0

2 files changed

Lines changed: 14 additions & 3 deletions

File tree

tests/benchmarks/mounting/collection-mount.bench.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ test.describe('Benchmark: Collection Mount', () => {
108108
entries[key] = buildResultEntry(timings, { format, size: Number(sizeStr) });
109109
}
110110

111-
writeResults(outputPath, entries);
111+
writeResults(outputPath, { name: 'Collection Mount', unit: 'ms', direction: 'smaller' }, entries);
112112
console.log(`[BENCHMARK] Results written to ${outputPath}`);
113113
});
114114
});

tests/benchmarks/utils/results.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*
44
* Results shape (written by benchmark tests):
55
* {
6+
* "suite": { "name": "...", "unit": "ms", "direction": "smaller" },
67
* "entries": {
78
* "<key>": { mean, median, p50, p90, p99, stdDev, min, max, count, timings, ...meta }
89
* }
@@ -20,6 +21,15 @@
2021
import { existsSync, readFileSync, writeFileSync } from 'fs';
2122
import { summarize } from './stats';
2223

24+
export type Direction = 'smaller' | 'bigger';
25+
export type Unit = 'ms' | 's' | 'ops/s' | 'bytes' | '%' | 'count';
26+
27+
export interface SuiteMeta {
28+
name: string;
29+
unit: Unit;
30+
direction: Direction;
31+
}
32+
2333
export interface ResultEntry {
2434
mean: number;
2535
median: number;
@@ -35,6 +45,7 @@ export interface ResultEntry {
3545
}
3646

3747
export interface ResultsFile {
48+
suite: SuiteMeta;
3849
entries: Record<string, ResultEntry>;
3950
}
4051

@@ -55,8 +66,8 @@ export function readResults(filePath: string): ResultsFile {
5566
return JSON.parse(readFileSync(filePath, 'utf-8'));
5667
}
5768

58-
export function writeResults(filePath: string, entries: Record<string, ResultEntry>) {
59-
const data: ResultsFile = { entries };
69+
export function writeResults(filePath: string, suite: SuiteMeta, entries: Record<string, ResultEntry>) {
70+
const data: ResultsFile = { suite, entries };
6071
writeFileSync(filePath, JSON.stringify(data, null, 2));
6172
}
6273

0 commit comments

Comments
 (0)