modestbench 0.3.0 → 0.3.2
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/README.md +1 -1
- package/dist/cli/commands/init.cjs +13 -12
- package/dist/cli/commands/init.cjs.map +1 -1
- package/dist/cli/commands/init.d.cts.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +13 -12
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/run.cjs +16 -12
- package/dist/cli/commands/run.cjs.map +1 -1
- package/dist/cli/commands/run.d.cts.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +16 -12
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/config/schema.cjs +2 -1
- package/dist/config/schema.cjs.map +1 -1
- package/dist/config/schema.d.cts +3 -3
- package/dist/config/schema.d.cts.map +1 -1
- package/dist/config/schema.d.ts +3 -3
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +2 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/core/engine.cjs +11 -2
- package/dist/core/engine.cjs.map +1 -1
- package/dist/core/engine.d.cts.map +1 -1
- package/dist/core/engine.d.ts.map +1 -1
- package/dist/core/engine.js +11 -2
- package/dist/core/engine.js.map +1 -1
- package/dist/core/engines/accurate-engine.cjs +171 -36
- package/dist/core/engines/accurate-engine.cjs.map +1 -1
- package/dist/core/engines/accurate-engine.d.cts +5 -0
- package/dist/core/engines/accurate-engine.d.cts.map +1 -1
- package/dist/core/engines/accurate-engine.d.ts +5 -0
- package/dist/core/engines/accurate-engine.d.ts.map +1 -1
- package/dist/core/engines/accurate-engine.js +171 -36
- package/dist/core/engines/accurate-engine.js.map +1 -1
- package/dist/core/engines/tinybench-engine.cjs +3 -2
- package/dist/core/engines/tinybench-engine.cjs.map +1 -1
- package/dist/core/engines/tinybench-engine.d.cts.map +1 -1
- package/dist/core/engines/tinybench-engine.d.ts.map +1 -1
- package/dist/core/engines/tinybench-engine.js +3 -2
- package/dist/core/engines/tinybench-engine.js.map +1 -1
- package/dist/reporters/human.cjs +226 -29
- package/dist/reporters/human.cjs.map +1 -1
- package/dist/reporters/human.d.cts +11 -0
- package/dist/reporters/human.d.cts.map +1 -1
- package/dist/reporters/human.d.ts +11 -0
- package/dist/reporters/human.d.ts.map +1 -1
- package/dist/reporters/human.js +226 -29
- package/dist/reporters/human.js.map +1 -1
- package/dist/reporters/profile-human.cjs +6 -1
- package/dist/reporters/profile-human.cjs.map +1 -1
- package/dist/reporters/profile-human.d.cts.map +1 -1
- package/dist/reporters/profile-human.d.ts.map +1 -1
- package/dist/reporters/profile-human.js +6 -1
- package/dist/reporters/profile-human.js.map +1 -1
- package/dist/reporters/simple.cjs +4 -2
- package/dist/reporters/simple.cjs.map +1 -1
- package/dist/reporters/simple.d.cts.map +1 -1
- package/dist/reporters/simple.d.ts.map +1 -1
- package/dist/reporters/simple.js +4 -2
- package/dist/reporters/simple.js.map +1 -1
- package/dist/schema/modestbench-config.schema.json +1 -1
- package/dist/services/config-manager.cjs +1 -1
- package/dist/services/config-manager.cjs.map +1 -1
- package/dist/services/config-manager.js +1 -1
- package/dist/services/config-manager.js.map +1 -1
- package/dist/services/profiler/profile-filter.cjs +4 -1
- package/dist/services/profiler/profile-filter.cjs.map +1 -1
- package/dist/services/profiler/profile-filter.d.cts.map +1 -1
- package/dist/services/profiler/profile-filter.d.ts.map +1 -1
- package/dist/services/profiler/profile-filter.js +4 -1
- package/dist/services/profiler/profile-filter.js.map +1 -1
- package/dist/services/progress-manager.cjs +10 -2
- package/dist/services/progress-manager.cjs.map +1 -1
- package/dist/services/progress-manager.d.cts +2 -0
- package/dist/services/progress-manager.d.cts.map +1 -1
- package/dist/services/progress-manager.d.ts +2 -0
- package/dist/services/progress-manager.d.ts.map +1 -1
- package/dist/services/progress-manager.js +10 -2
- package/dist/services/progress-manager.js.map +1 -1
- package/dist/types/core.d.cts +4 -2
- package/dist/types/core.d.cts.map +1 -1
- package/dist/types/core.d.ts +4 -2
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/interfaces.d.cts +4 -0
- package/dist/types/interfaces.d.cts.map +1 -1
- package/dist/types/interfaces.d.ts +4 -0
- package/dist/types/interfaces.d.ts.map +1 -1
- package/dist/types/profiler.d.cts +2 -0
- package/dist/types/profiler.d.cts.map +1 -1
- package/dist/types/profiler.d.ts +2 -0
- package/dist/types/profiler.d.ts.map +1 -1
- package/package.json +9 -10
- package/src/cli/commands/init.ts +13 -12
- package/src/cli/commands/run.ts +17 -13
- package/src/config/schema.ts +2 -1
- package/src/core/engine.ts +18 -2
- package/src/core/engines/accurate-engine.ts +195 -44
- package/src/core/engines/tinybench-engine.ts +3 -2
- package/src/reporters/human.ts +350 -72
- package/src/reporters/profile-human.ts +9 -3
- package/src/reporters/simple.ts +5 -2
- package/src/services/config-manager.ts +1 -1
- package/src/services/profiler/profile-filter.ts +5 -1
- package/src/services/progress-manager.ts +12 -2
- package/src/types/core.ts +4 -2
- package/src/types/interfaces.ts +8 -0
- package/src/types/profiler.ts +3 -0
|
@@ -32,12 +32,16 @@ interface ProgressMetrics {
|
|
|
32
32
|
export class ModestBenchProgressManager implements ProgressManager {
|
|
33
33
|
private callbacks: ProgressCallback[] = [];
|
|
34
34
|
|
|
35
|
+
private lastMetricsUpdate = 0;
|
|
36
|
+
|
|
35
37
|
private lastUpdate = 0;
|
|
36
38
|
|
|
37
39
|
private readonly maxRecentTimings = 10;
|
|
38
40
|
|
|
39
41
|
private metrics: null | ProgressMetrics = null;
|
|
40
42
|
|
|
43
|
+
private readonly metricsUpdateThrottleMs = 1000; // Throttle ETA calculations (1 second)
|
|
44
|
+
|
|
41
45
|
private state: ProgressState;
|
|
42
46
|
|
|
43
47
|
private readonly updateThrottleMs = 100; // Limit updates to avoid spam
|
|
@@ -53,6 +57,8 @@ export class ModestBenchProgressManager implements ProgressManager {
|
|
|
53
57
|
this.callbacks = [];
|
|
54
58
|
this.metrics = null;
|
|
55
59
|
this.state = this.createInitialState();
|
|
60
|
+
this.lastUpdate = 0;
|
|
61
|
+
this.lastMetricsUpdate = 0;
|
|
56
62
|
}
|
|
57
63
|
|
|
58
64
|
/**
|
|
@@ -240,6 +246,7 @@ export class ModestBenchProgressManager implements ProgressManager {
|
|
|
240
246
|
};
|
|
241
247
|
|
|
242
248
|
this.lastUpdate = Date.now();
|
|
249
|
+
this.lastMetricsUpdate = Date.now();
|
|
243
250
|
this.notifyCallbacks();
|
|
244
251
|
}
|
|
245
252
|
|
|
@@ -314,8 +321,11 @@ export class ModestBenchProgressManager implements ProgressManager {
|
|
|
314
321
|
percentage: this.calculatePercentage(updates),
|
|
315
322
|
};
|
|
316
323
|
|
|
317
|
-
// Update metrics for completion estimation
|
|
318
|
-
this.
|
|
324
|
+
// Update metrics for completion estimation (throttled separately for ETA)
|
|
325
|
+
if (now - this.lastMetricsUpdate >= this.metricsUpdateThrottleMs) {
|
|
326
|
+
this.updateMetrics(now);
|
|
327
|
+
this.lastMetricsUpdate = now;
|
|
328
|
+
}
|
|
319
329
|
|
|
320
330
|
this.lastUpdate = now;
|
|
321
331
|
this.notifyCallbacks();
|
package/src/types/core.ts
CHANGED
|
@@ -327,8 +327,8 @@ export interface ModestBenchConfig {
|
|
|
327
327
|
readonly limitBy: 'all' | 'any' | 'iterations' | 'time';
|
|
328
328
|
/** Custom metadata to attach to runs */
|
|
329
329
|
readonly metadata: Record<string, unknown>;
|
|
330
|
-
/** Output directory for reports */
|
|
331
|
-
readonly outputDir
|
|
330
|
+
/** Output directory for reports (undefined means stdout for data reporters) */
|
|
331
|
+
readonly outputDir?: string;
|
|
332
332
|
/** Pattern(s) for discovering benchmark files */
|
|
333
333
|
readonly pattern: string | string[];
|
|
334
334
|
/** Whether to run in quiet mode */
|
|
@@ -403,6 +403,8 @@ export interface SuiteResult {
|
|
|
403
403
|
* Represents a single benchmark task execution result
|
|
404
404
|
*/
|
|
405
405
|
export interface TaskResult {
|
|
406
|
+
/** Whether the task was aborted (via Ctrl+C or signal) */
|
|
407
|
+
readonly aborted?: boolean;
|
|
406
408
|
/** Coefficient of variation (stdDev/mean × 100) */
|
|
407
409
|
readonly cv: number;
|
|
408
410
|
/** Any error that occurred during execution */
|
package/src/types/interfaces.ts
CHANGED
|
@@ -313,6 +313,14 @@ export interface Reporter {
|
|
|
313
313
|
*/
|
|
314
314
|
onSuiteEnd?(result: SuiteResult): Promise<void> | void;
|
|
315
315
|
|
|
316
|
+
/**
|
|
317
|
+
* Called before a suite starts, providing task names for pre-calculation
|
|
318
|
+
*/
|
|
319
|
+
onSuiteInit?(
|
|
320
|
+
suite: string,
|
|
321
|
+
taskNames: readonly string[],
|
|
322
|
+
): Promise<void> | void;
|
|
323
|
+
|
|
316
324
|
/**
|
|
317
325
|
* Called when a suite starts execution
|
|
318
326
|
*/
|
package/src/types/profiler.ts
CHANGED
|
@@ -23,6 +23,9 @@ export interface FilteredProfileData {
|
|
|
23
23
|
/** Grouped by file (if requested) */
|
|
24
24
|
groupedByFile?: Map<string, ProfiledFunction[]>;
|
|
25
25
|
|
|
26
|
+
/** Minimum execution percentage threshold used */
|
|
27
|
+
minExecutionPercent: number;
|
|
28
|
+
|
|
26
29
|
/** Profile summary */
|
|
27
30
|
summary: ProfileSummary;
|
|
28
31
|
|