modestbench 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/adapters/jest-adapter.cjs +496 -0
- package/dist/adapters/jest-adapter.cjs.map +1 -0
- package/dist/adapters/jest-adapter.d.cts +42 -0
- package/dist/adapters/jest-adapter.d.cts.map +1 -0
- package/dist/adapters/jest-adapter.d.ts +42 -0
- package/dist/adapters/jest-adapter.d.ts.map +1 -0
- package/dist/adapters/jest-adapter.js +459 -0
- package/dist/adapters/jest-adapter.js.map +1 -0
- package/dist/adapters/jest-hooks.cjs +83 -0
- package/dist/adapters/jest-hooks.cjs.map +1 -0
- package/dist/adapters/jest-hooks.d.cts +24 -0
- package/dist/adapters/jest-hooks.d.cts.map +1 -0
- package/dist/adapters/jest-hooks.d.ts +24 -0
- package/dist/adapters/jest-hooks.d.ts.map +1 -0
- package/dist/adapters/jest-hooks.js +78 -0
- package/dist/adapters/jest-hooks.js.map +1 -0
- package/dist/adapters/jest-register.cjs +17 -0
- package/dist/adapters/jest-register.cjs.map +1 -0
- package/dist/adapters/jest-register.d.cts +12 -0
- package/dist/adapters/jest-register.d.cts.map +1 -0
- package/dist/adapters/jest-register.d.ts +12 -0
- package/dist/adapters/jest-register.d.ts.map +1 -0
- package/dist/adapters/jest-register.js +15 -0
- package/dist/adapters/jest-register.js.map +1 -0
- package/dist/adapters/types.cjs.map +1 -1
- package/dist/adapters/types.d.cts +5 -1
- package/dist/adapters/types.d.cts.map +1 -1
- package/dist/adapters/types.d.ts +5 -1
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/cli/commands/test.cjs +3 -0
- package/dist/cli/commands/test.cjs.map +1 -1
- package/dist/cli/commands/test.d.cts.map +1 -1
- package/dist/cli/commands/test.d.ts.map +1 -1
- package/dist/cli/commands/test.js +3 -0
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/index.cjs +2 -2
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/core/engines/tinybench-engine.cjs +1 -1
- package/dist/core/engines/tinybench-engine.cjs.map +1 -1
- package/dist/core/engines/tinybench-engine.js +1 -1
- package/dist/core/engines/tinybench-engine.js.map +1 -1
- package/dist/core/stats-utils.cjs +4 -2
- package/dist/core/stats-utils.cjs.map +1 -1
- package/dist/core/stats-utils.d.cts +1 -1
- package/dist/core/stats-utils.d.cts.map +1 -1
- package/dist/core/stats-utils.d.ts +1 -1
- package/dist/core/stats-utils.d.ts.map +1 -1
- package/dist/core/stats-utils.js +4 -2
- package/dist/core/stats-utils.js.map +1 -1
- package/dist/formatters/history/compare.cjs.map +1 -1
- package/dist/formatters/history/compare.d.cts.map +1 -1
- package/dist/formatters/history/compare.d.ts.map +1 -1
- package/dist/formatters/history/compare.js.map +1 -1
- package/dist/formatters/history/list.cjs.map +1 -1
- package/dist/formatters/history/list.d.cts.map +1 -1
- package/dist/formatters/history/list.d.ts.map +1 -1
- package/dist/formatters/history/list.js.map +1 -1
- package/dist/services/config-manager.cjs.map +1 -1
- package/dist/services/config-manager.d.cts.map +1 -1
- package/dist/services/config-manager.d.ts.map +1 -1
- package/dist/services/config-manager.js.map +1 -1
- package/dist/services/file-loader.cjs.map +1 -1
- package/dist/services/file-loader.d.cts.map +1 -1
- package/dist/services/file-loader.d.ts.map +1 -1
- package/dist/services/file-loader.js.map +1 -1
- package/package.json +32 -13
- package/src/adapters/jest-adapter.ts +563 -0
- package/src/adapters/jest-hooks.ts +82 -0
- package/src/adapters/jest-register.ts +16 -0
- package/src/adapters/types.ts +5 -1
- package/src/cli/commands/test.ts +3 -0
- package/src/cli/index.ts +2 -2
- package/src/core/engines/tinybench-engine.ts +1 -1
- package/src/core/stats-utils.ts +5 -3
- package/src/formatters/history/compare.ts +1 -3
- package/src/formatters/history/list.ts +1 -3
- package/src/services/config-manager.ts +2 -3
- package/src/services/file-loader.ts +2 -3
|
@@ -376,7 +376,7 @@ export class TinybenchEngine extends ModestBenchEngine {
|
|
|
376
376
|
return {
|
|
377
377
|
cv: result.latency.rme, // Use relative margin of error as CV approximation
|
|
378
378
|
iterations: result.latency.samplesCount,
|
|
379
|
-
marginOfError: result.latency.
|
|
379
|
+
marginOfError: result.latency.rme, // rme is already a percentage
|
|
380
380
|
max: result.latency.max,
|
|
381
381
|
mean: result.latency.mean,
|
|
382
382
|
metadata: taskData.metadata ?? {},
|
package/src/core/stats-utils.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
export interface SampleStatistics {
|
|
12
12
|
/** Coefficient of variation (stdDev/mean × 100) */
|
|
13
13
|
readonly cv: number;
|
|
14
|
-
/**
|
|
14
|
+
/** Relative margin of error at 95% confidence (as percentage) */
|
|
15
15
|
readonly marginOfError: number;
|
|
16
16
|
/** Maximum value */
|
|
17
17
|
readonly max: number;
|
|
@@ -79,10 +79,12 @@ export const calculateStatistics = (samples: number[]): SampleStatistics => {
|
|
|
79
79
|
// Coefficient of Variation
|
|
80
80
|
const cv = mean === 0 || samples.length < 2 ? 0 : (stdDev / mean) * 100;
|
|
81
81
|
|
|
82
|
-
// Margin of Error (95% confidence)
|
|
82
|
+
// Relative Margin of Error (95% confidence) - as percentage
|
|
83
|
+
// Formula: (Z * stdDev / sqrt(n)) / mean * 100
|
|
83
84
|
const Z = 1.96;
|
|
84
|
-
const
|
|
85
|
+
const absoluteMoe =
|
|
85
86
|
samples.length === 0 ? 0 : (Z * stdDev) / Math.sqrt(samples.length);
|
|
87
|
+
const marginOfError = mean === 0 ? 0 : (absoluteMoe / mean) * 100;
|
|
86
88
|
|
|
87
89
|
// Percentiles (using standard formula: floor((n-1) * p))
|
|
88
90
|
const p95 = samples[Math.floor((samples.length - 1) * 0.95)] ?? 0;
|
|
@@ -13,9 +13,7 @@ import { ansiChars } from '../../utils/ansi.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* Formatter for history compare command
|
|
15
15
|
*/
|
|
16
|
-
export class HistoryCompareFormatter
|
|
17
|
-
implements HistoryFormatter<CompareResult>
|
|
18
|
-
{
|
|
16
|
+
export class HistoryCompareFormatter implements HistoryFormatter<CompareResult> {
|
|
19
17
|
/**
|
|
20
18
|
* Format as human-readable comparison
|
|
21
19
|
*/
|
|
@@ -12,9 +12,7 @@ import { ansiChars, colorize } from '../../utils/ansi.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* Formatter for history list command
|
|
14
14
|
*/
|
|
15
|
-
export class HistoryListFormatter
|
|
16
|
-
implements HistoryFormatter<HistoryListResult>
|
|
17
|
-
{
|
|
15
|
+
export class HistoryListFormatter implements HistoryFormatter<HistoryListResult> {
|
|
18
16
|
/**
|
|
19
17
|
* Format as CSV
|
|
20
18
|
*/
|
|
@@ -320,9 +320,8 @@ export class ModestBenchConfigurationManager implements ConfigurationManager {
|
|
|
320
320
|
'.ts': async (filepath: string): Promise<unknown> => {
|
|
321
321
|
// Use cosmiconfig-typescript-loader to load TypeScript files
|
|
322
322
|
// This works without tsx in the import chain
|
|
323
|
-
const { TypeScriptLoader: createTypeScriptLoader } =
|
|
324
|
-
'cosmiconfig-typescript-loader'
|
|
325
|
-
);
|
|
323
|
+
const { TypeScriptLoader: createTypeScriptLoader } =
|
|
324
|
+
await import('cosmiconfig-typescript-loader');
|
|
326
325
|
const loader = createTypeScriptLoader();
|
|
327
326
|
const { readFile } = await import('node:fs/promises');
|
|
328
327
|
const content = await readFile(filepath, 'utf-8');
|
|
@@ -142,9 +142,8 @@ export class BenchmarkFileLoader implements FileLoader {
|
|
|
142
142
|
|
|
143
143
|
if (ext === '.ts' || ext === '.mts' || ext === '.cts') {
|
|
144
144
|
// For TypeScript files, use cosmiconfig-typescript-loader
|
|
145
|
-
const { TypeScriptLoader: createTypeScriptLoader } =
|
|
146
|
-
'cosmiconfig-typescript-loader'
|
|
147
|
-
);
|
|
145
|
+
const { TypeScriptLoader: createTypeScriptLoader } =
|
|
146
|
+
await import('cosmiconfig-typescript-loader');
|
|
148
147
|
const loader = createTypeScriptLoader();
|
|
149
148
|
module = (await loader(filePath, content)) as {
|
|
150
149
|
[key: string]: unknown;
|