modestbench 0.3.2 → 0.5.1

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.
Files changed (184) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +45 -2
  3. package/dist/adapters/ava-adapter.cjs +421 -0
  4. package/dist/adapters/ava-adapter.cjs.map +1 -0
  5. package/dist/adapters/ava-adapter.d.cts +39 -0
  6. package/dist/adapters/ava-adapter.d.cts.map +1 -0
  7. package/dist/adapters/ava-adapter.d.ts +39 -0
  8. package/dist/adapters/ava-adapter.d.ts.map +1 -0
  9. package/dist/adapters/ava-adapter.js +384 -0
  10. package/dist/adapters/ava-adapter.js.map +1 -0
  11. package/dist/adapters/ava-hooks.cjs +66 -0
  12. package/dist/adapters/ava-hooks.cjs.map +1 -0
  13. package/dist/adapters/ava-hooks.d.cts +24 -0
  14. package/dist/adapters/ava-hooks.d.cts.map +1 -0
  15. package/dist/adapters/ava-hooks.d.ts +24 -0
  16. package/dist/adapters/ava-hooks.d.ts.map +1 -0
  17. package/dist/adapters/ava-hooks.js +61 -0
  18. package/dist/adapters/ava-hooks.js.map +1 -0
  19. package/dist/adapters/ava-register.cjs +16 -0
  20. package/dist/adapters/ava-register.cjs.map +1 -0
  21. package/dist/adapters/ava-register.d.cts +11 -0
  22. package/dist/adapters/ava-register.d.cts.map +1 -0
  23. package/dist/adapters/ava-register.d.ts +11 -0
  24. package/dist/adapters/ava-register.d.ts.map +1 -0
  25. package/dist/adapters/ava-register.js +14 -0
  26. package/dist/adapters/ava-register.js.map +1 -0
  27. package/dist/adapters/mocha-adapter.cjs +254 -0
  28. package/dist/adapters/mocha-adapter.cjs.map +1 -0
  29. package/dist/adapters/mocha-adapter.d.cts +26 -0
  30. package/dist/adapters/mocha-adapter.d.cts.map +1 -0
  31. package/dist/adapters/mocha-adapter.d.ts +26 -0
  32. package/dist/adapters/mocha-adapter.d.ts.map +1 -0
  33. package/dist/adapters/mocha-adapter.js +217 -0
  34. package/dist/adapters/mocha-adapter.js.map +1 -0
  35. package/dist/adapters/node-test-adapter.cjs +335 -0
  36. package/dist/adapters/node-test-adapter.cjs.map +1 -0
  37. package/dist/adapters/node-test-adapter.d.cts +41 -0
  38. package/dist/adapters/node-test-adapter.d.cts.map +1 -0
  39. package/dist/adapters/node-test-adapter.d.ts +41 -0
  40. package/dist/adapters/node-test-adapter.d.ts.map +1 -0
  41. package/dist/adapters/node-test-adapter.js +298 -0
  42. package/dist/adapters/node-test-adapter.js.map +1 -0
  43. package/dist/adapters/node-test-hooks.cjs +72 -0
  44. package/dist/adapters/node-test-hooks.cjs.map +1 -0
  45. package/dist/adapters/node-test-hooks.d.cts +24 -0
  46. package/dist/adapters/node-test-hooks.d.cts.map +1 -0
  47. package/dist/adapters/node-test-hooks.d.ts +24 -0
  48. package/dist/adapters/node-test-hooks.d.ts.map +1 -0
  49. package/dist/adapters/node-test-hooks.js +67 -0
  50. package/dist/adapters/node-test-hooks.js.map +1 -0
  51. package/dist/adapters/node-test-register.cjs +7 -0
  52. package/dist/adapters/node-test-register.cjs.map +1 -0
  53. package/dist/adapters/node-test-register.d.cts +2 -0
  54. package/dist/adapters/node-test-register.d.cts.map +1 -0
  55. package/dist/adapters/node-test-register.d.ts +2 -0
  56. package/dist/adapters/node-test-register.d.ts.map +1 -0
  57. package/dist/adapters/node-test-register.js +5 -0
  58. package/dist/adapters/node-test-register.js.map +1 -0
  59. package/dist/adapters/types.cjs +152 -0
  60. package/dist/adapters/types.cjs.map +1 -0
  61. package/dist/adapters/types.d.cts +112 -0
  62. package/dist/adapters/types.d.cts.map +1 -0
  63. package/dist/adapters/types.d.ts +112 -0
  64. package/dist/adapters/types.d.ts.map +1 -0
  65. package/dist/adapters/types.js +148 -0
  66. package/dist/adapters/types.js.map +1 -0
  67. package/dist/cli/commands/init.cjs +21 -17
  68. package/dist/cli/commands/init.cjs.map +1 -1
  69. package/dist/cli/commands/init.d.cts.map +1 -1
  70. package/dist/cli/commands/init.d.ts.map +1 -1
  71. package/dist/cli/commands/init.js +21 -17
  72. package/dist/cli/commands/init.js.map +1 -1
  73. package/dist/cli/commands/run.cjs +6 -2
  74. package/dist/cli/commands/run.cjs.map +1 -1
  75. package/dist/cli/commands/run.js +6 -2
  76. package/dist/cli/commands/run.js.map +1 -1
  77. package/dist/cli/commands/test.cjs +392 -0
  78. package/dist/cli/commands/test.cjs.map +1 -0
  79. package/dist/cli/commands/test.d.cts +38 -0
  80. package/dist/cli/commands/test.d.cts.map +1 -0
  81. package/dist/cli/commands/test.d.ts +38 -0
  82. package/dist/cli/commands/test.d.ts.map +1 -0
  83. package/dist/cli/commands/test.js +388 -0
  84. package/dist/cli/commands/test.js.map +1 -0
  85. package/dist/cli/index.cjs +72 -1
  86. package/dist/cli/index.cjs.map +1 -1
  87. package/dist/cli/index.d.cts.map +1 -1
  88. package/dist/cli/index.d.ts.map +1 -1
  89. package/dist/cli/index.js +73 -2
  90. package/dist/cli/index.js.map +1 -1
  91. package/dist/constants.cjs +13 -1
  92. package/dist/constants.cjs.map +1 -1
  93. package/dist/constants.d.cts +12 -0
  94. package/dist/constants.d.cts.map +1 -1
  95. package/dist/constants.d.ts +12 -0
  96. package/dist/constants.d.ts.map +1 -1
  97. package/dist/constants.js +12 -0
  98. package/dist/constants.js.map +1 -1
  99. package/dist/core/engine.cjs +4 -0
  100. package/dist/core/engine.cjs.map +1 -1
  101. package/dist/core/engine.d.cts.map +1 -1
  102. package/dist/core/engine.d.ts.map +1 -1
  103. package/dist/core/engine.js +4 -0
  104. package/dist/core/engine.js.map +1 -1
  105. package/dist/core/engines/tinybench-engine.cjs +163 -131
  106. package/dist/core/engines/tinybench-engine.cjs.map +1 -1
  107. package/dist/core/engines/tinybench-engine.d.cts +6 -0
  108. package/dist/core/engines/tinybench-engine.d.cts.map +1 -1
  109. package/dist/core/engines/tinybench-engine.d.ts +6 -0
  110. package/dist/core/engines/tinybench-engine.d.ts.map +1 -1
  111. package/dist/core/engines/tinybench-engine.js +163 -131
  112. package/dist/core/engines/tinybench-engine.js.map +1 -1
  113. package/dist/core/stats-utils.cjs +4 -2
  114. package/dist/core/stats-utils.cjs.map +1 -1
  115. package/dist/core/stats-utils.d.cts +1 -1
  116. package/dist/core/stats-utils.d.cts.map +1 -1
  117. package/dist/core/stats-utils.d.ts +1 -1
  118. package/dist/core/stats-utils.d.ts.map +1 -1
  119. package/dist/core/stats-utils.js +4 -2
  120. package/dist/core/stats-utils.js.map +1 -1
  121. package/dist/errors/base.cjs +2 -1
  122. package/dist/errors/base.cjs.map +1 -1
  123. package/dist/errors/base.d.cts.map +1 -1
  124. package/dist/errors/base.d.ts.map +1 -1
  125. package/dist/errors/base.js +2 -1
  126. package/dist/errors/base.js.map +1 -1
  127. package/dist/formatters/history/compare.cjs.map +1 -1
  128. package/dist/formatters/history/compare.d.cts.map +1 -1
  129. package/dist/formatters/history/compare.d.ts.map +1 -1
  130. package/dist/formatters/history/compare.js.map +1 -1
  131. package/dist/formatters/history/list.cjs.map +1 -1
  132. package/dist/formatters/history/list.d.cts.map +1 -1
  133. package/dist/formatters/history/list.d.ts.map +1 -1
  134. package/dist/formatters/history/list.js.map +1 -1
  135. package/dist/reporters/human.cjs +83 -27
  136. package/dist/reporters/human.cjs.map +1 -1
  137. package/dist/reporters/human.d.cts +1 -0
  138. package/dist/reporters/human.d.cts.map +1 -1
  139. package/dist/reporters/human.d.ts +1 -0
  140. package/dist/reporters/human.d.ts.map +1 -1
  141. package/dist/reporters/human.js +83 -27
  142. package/dist/reporters/human.js.map +1 -1
  143. package/dist/reporters/simple.cjs +68 -21
  144. package/dist/reporters/simple.cjs.map +1 -1
  145. package/dist/reporters/simple.d.cts +1 -0
  146. package/dist/reporters/simple.d.cts.map +1 -1
  147. package/dist/reporters/simple.d.ts +1 -0
  148. package/dist/reporters/simple.d.ts.map +1 -1
  149. package/dist/reporters/simple.js +68 -21
  150. package/dist/reporters/simple.js.map +1 -1
  151. package/dist/services/config-manager.cjs +1 -1
  152. package/dist/services/config-manager.cjs.map +1 -1
  153. package/dist/services/config-manager.d.cts.map +1 -1
  154. package/dist/services/config-manager.d.ts.map +1 -1
  155. package/dist/services/config-manager.js +2 -2
  156. package/dist/services/config-manager.js.map +1 -1
  157. package/dist/services/file-loader.cjs.map +1 -1
  158. package/dist/services/file-loader.d.cts.map +1 -1
  159. package/dist/services/file-loader.d.ts.map +1 -1
  160. package/dist/services/file-loader.js.map +1 -1
  161. package/package.json +63 -35
  162. package/src/adapters/ava-adapter.ts +553 -0
  163. package/src/adapters/ava-hooks.ts +65 -0
  164. package/src/adapters/ava-register.ts +15 -0
  165. package/src/adapters/mocha-adapter.ts +284 -0
  166. package/src/adapters/node-test-adapter.ts +391 -0
  167. package/src/adapters/node-test-hooks.ts +71 -0
  168. package/src/adapters/node-test-register.ts +5 -0
  169. package/src/adapters/types.ts +281 -0
  170. package/src/cli/commands/init.ts +25 -17
  171. package/src/cli/commands/run.ts +9 -2
  172. package/src/cli/commands/test.ts +546 -0
  173. package/src/cli/index.ts +81 -1
  174. package/src/constants.ts +15 -0
  175. package/src/core/engine.ts +5 -0
  176. package/src/core/engines/tinybench-engine.ts +213 -141
  177. package/src/core/stats-utils.ts +5 -3
  178. package/src/errors/base.ts +3 -2
  179. package/src/formatters/history/compare.ts +1 -3
  180. package/src/formatters/history/list.ts +1 -3
  181. package/src/reporters/human.ts +107 -36
  182. package/src/reporters/simple.ts +81 -22
  183. package/src/services/config-manager.ts +4 -5
  184. package/src/services/file-loader.ts +2 -3
@@ -56,6 +56,7 @@ class TinybenchEngine extends engine_js_1.ModestBenchEngine {
56
56
  }
57
57
  const bench = new tinybench_1.Bench({
58
58
  iterations: effectiveIterations,
59
+ retainSamples: true, // Required in tinybench v6+ to access samples for custom stats
59
60
  time: effectiveTime,
60
61
  warmupIterations: config.warmup,
61
62
  warmupTime: config.warmup > 0 ? Math.min(config.warmup || 0, 500) : 0,
@@ -97,14 +98,12 @@ class TinybenchEngine extends engine_js_1.ModestBenchEngine {
97
98
  }
98
99
  const minimalBench = new tinybench_1.Bench({
99
100
  iterations: config.iterations,
101
+ retainSamples: true,
100
102
  time: retryTime,
101
103
  warmupIterations: config.warmup,
102
104
  warmupTime: 0,
103
105
  });
104
- minimalBench.add(taskName, taskData.fn,
105
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
106
- // @ts-ignore - Pending https://github.com/tinylibs/tinybench/pull/364
107
- signal ? { signal } : undefined);
106
+ minimalBench.add(taskName, taskData.fn, signal ? { signal } : undefined);
108
107
  try {
109
108
  await minimalBench.run();
110
109
  }
@@ -113,31 +112,19 @@ class TinybenchEngine extends engine_js_1.ModestBenchEngine {
113
112
  throw new index_js_1.OperationTooFastError(`Benchmark operation is too fast to measure reliably (execution time < 1ns)`);
114
113
  }
115
114
  const minimalResults = minimalBench.results[0];
116
- if (!minimalResults || minimalResults.error) {
117
- throw new index_js_1.OperationTooFastError(`Benchmark too fast to measure reliably: ${minimalResults?.error?.message || 'unknown error'}`);
115
+ // Handle discriminated union: check state for error/completion
116
+ if (!minimalResults || minimalResults.state === 'errored') {
117
+ const errorMsg = minimalResults?.state === 'errored'
118
+ ? minimalResults.error.message
119
+ : 'unknown error';
120
+ throw new index_js_1.OperationTooFastError(`Benchmark too fast to measure reliably: ${errorMsg}`);
118
121
  }
119
- // Continue with minimal results - apply outlier removal
120
- const minimalRawSamples = minimalResults.latency.samples || [];
121
- const minimalSamplesInNs = minimalRawSamples.map((s) => s * 1e6);
122
- const minimalCleanedSamples = (0, stats_utils_js_1.removeOutliersIQR)(minimalSamplesInNs);
123
- const minimalStats = (0, stats_utils_js_1.calculateStatistics)(minimalCleanedSamples);
124
- const taskResult = {
125
- cv: minimalStats.cv,
126
- iterations: minimalCleanedSamples.length,
127
- marginOfError: minimalStats.marginOfError,
128
- max: minimalStats.max,
129
- mean: minimalStats.mean,
130
- metadata: taskData.metadata ?? {},
131
- min: minimalStats.min,
132
- name: taskName,
133
- opsPerSecond: minimalResults.throughput.mean || 0,
134
- p95: minimalStats.p95,
135
- p99: minimalStats.p99,
136
- stdDev: minimalStats.stdDev,
137
- ...(taskData.tags ? { tags: taskData.tags } : {}),
138
- variance: minimalStats.variance,
139
- };
140
- return taskResult;
122
+ // Extract stats from completed result
123
+ const taskResultFromMinimal = this.extractTaskResultFromTinybenchResult(taskName, taskData, minimalResults);
124
+ if (taskResultFromMinimal) {
125
+ return taskResultFromMinimal;
126
+ }
127
+ throw new index_js_1.OperationTooFastError(`Benchmark too fast to measure reliably: no statistics available`);
141
128
  }
142
129
  throw error;
143
130
  }
@@ -150,116 +137,108 @@ class TinybenchEngine extends engine_js_1.ModestBenchEngine {
150
137
  if (!results) {
151
138
  throw new index_js_1.BenchmarkExecutionError('No benchmark results returned');
152
139
  }
153
- // Check if the task was aborted
154
- if (results.aborted) {
155
- // Task was aborted via signal - return minimal valid result marked as aborted
156
- // (abort message is shown at run level, not per-task)
157
- const taskResult = {
158
- aborted: true,
159
- cv: 0,
160
- iterations: results.latency?.samples?.length || 0,
161
- marginOfError: 0,
162
- max: 0,
163
- mean: 0,
164
- metadata: taskData.metadata ?? {},
165
- min: 0,
166
- name: taskName,
167
- opsPerSecond: 0,
168
- p95: 0,
169
- p99: 0,
170
- stdDev: 0,
171
- ...(taskData.tags ? { tags: taskData.tags } : {}),
172
- variance: 0,
173
- };
174
- return taskResult;
175
- }
176
- // Check if tinybench detected an error during execution
177
- if (results.error) {
178
- const errorMessage = results.error instanceof Error
179
- ? results.error.message
180
- : String(results.error);
181
- // Handle array length errors for extremely fast operations
182
- if (errorMessage.includes('Invalid array length')) {
183
- // Retry with minimal time for extremely fast operations
184
- // Use same limiting logic but with minimal time for fast ops
185
- let retryTime;
186
- switch (config.limitBy) {
187
- case 'all':
188
- case 'any':
189
- retryTime = 10;
190
- break;
191
- case 'iterations':
192
- retryTime = 1;
193
- break;
194
- case 'time':
195
- retryTime = 10;
196
- break;
197
- default:
198
- retryTime = 1;
199
- }
200
- const minimalBench = new tinybench_1.Bench({
201
- iterations: config.iterations,
202
- time: retryTime,
203
- warmupIterations: config.warmup,
204
- warmupTime: 0,
205
- });
206
- minimalBench.add(taskName, taskData.fn,
207
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
208
- // @ts-ignore - Pending https://github.com/tinylibs/tinybench/pull/364
209
- signal ? { signal } : undefined);
210
- await minimalBench.run();
211
- const minimalResults = minimalBench.results[0];
212
- if (!minimalResults || minimalResults.error) {
213
- // If retry also fails, just accept it failed
214
- throw new index_js_1.OperationTooFastError(`Benchmark operation is too fast to measure reliably`);
140
+ // Handle discriminated union based on state
141
+ switch (results.state) {
142
+ case 'aborted':
143
+ // Task was aborted via signal - return minimal valid result marked as aborted
144
+ return {
145
+ aborted: true,
146
+ cv: 0,
147
+ iterations: 0,
148
+ marginOfError: 0,
149
+ max: 0,
150
+ mean: 0,
151
+ metadata: taskData.metadata ?? {},
152
+ min: 0,
153
+ name: taskName,
154
+ opsPerSecond: 0,
155
+ p95: 0,
156
+ p99: 0,
157
+ stdDev: 0,
158
+ ...(taskData.tags ? { tags: taskData.tags } : {}),
159
+ variance: 0,
160
+ };
161
+ case 'aborted-with-statistics': {
162
+ // Aborted but has partial stats - use them
163
+ const taskResultFromAborted = this.extractTaskResultFromTinybenchResult(taskName, taskData, results);
164
+ if (taskResultFromAborted) {
165
+ return { ...taskResultFromAborted, aborted: true };
215
166
  }
216
- // Return minimal results - apply outlier removal
217
- const minimalRawSamples2 = minimalResults.latency.samples || [];
218
- const minimalSamplesInNs2 = minimalRawSamples2.map((s) => s * 1e6);
219
- const minimalCleanedSamples2 = (0, stats_utils_js_1.removeOutliersIQR)(minimalSamplesInNs2);
220
- const minimalStats2 = (0, stats_utils_js_1.calculateStatistics)(minimalCleanedSamples2);
221
- const taskResult = {
222
- cv: minimalStats2.cv,
223
- iterations: minimalCleanedSamples2.length,
224
- marginOfError: minimalStats2.marginOfError,
225
- max: minimalStats2.max,
226
- mean: minimalStats2.mean,
167
+ // Fall through to return minimal aborted result
168
+ return {
169
+ aborted: true,
170
+ cv: 0,
171
+ iterations: 0,
172
+ marginOfError: 0,
173
+ max: 0,
174
+ mean: 0,
227
175
  metadata: taskData.metadata ?? {},
228
- min: minimalStats2.min,
176
+ min: 0,
229
177
  name: taskName,
230
- opsPerSecond: minimalResults.throughput.mean || 0,
231
- p95: minimalStats2.p95,
232
- p99: minimalStats2.p99,
233
- stdDev: minimalStats2.stdDev,
178
+ opsPerSecond: 0,
179
+ p95: 0,
180
+ p99: 0,
181
+ stdDev: 0,
234
182
  ...(taskData.tags ? { tags: taskData.tags } : {}),
235
- variance: minimalStats2.variance,
183
+ variance: 0,
236
184
  };
237
- return taskResult;
238
185
  }
239
- throw results.error;
186
+ case 'errored': {
187
+ const errorMessage = results.error.message;
188
+ // Handle array length errors for extremely fast operations
189
+ if (errorMessage.includes('Invalid array length')) {
190
+ // Retry with minimal time for extremely fast operations
191
+ let retryTime;
192
+ switch (config.limitBy) {
193
+ case 'all':
194
+ case 'any':
195
+ retryTime = 10;
196
+ break;
197
+ case 'iterations':
198
+ retryTime = 1;
199
+ break;
200
+ case 'time':
201
+ retryTime = 10;
202
+ break;
203
+ default:
204
+ retryTime = 1;
205
+ }
206
+ const minimalBench = new tinybench_1.Bench({
207
+ iterations: config.iterations,
208
+ retainSamples: true,
209
+ time: retryTime,
210
+ warmupIterations: config.warmup,
211
+ warmupTime: 0,
212
+ });
213
+ minimalBench.add(taskName, taskData.fn, signal ? { signal } : undefined);
214
+ await minimalBench.run();
215
+ const minimalResults = minimalBench.results[0];
216
+ if (!minimalResults || minimalResults.state === 'errored') {
217
+ throw new index_js_1.OperationTooFastError(`Benchmark operation is too fast to measure reliably`);
218
+ }
219
+ const retryTaskResult = this.extractTaskResultFromTinybenchResult(taskName, taskData, minimalResults);
220
+ if (retryTaskResult) {
221
+ return retryTaskResult;
222
+ }
223
+ throw new index_js_1.OperationTooFastError(`Benchmark operation is too fast to measure reliably`);
224
+ }
225
+ throw results.error;
226
+ }
227
+ case 'completed': {
228
+ // Normal completion - extract full stats
229
+ const taskResultFromCompleted = this.extractTaskResultFromTinybenchResult(taskName, taskData, results);
230
+ if (taskResultFromCompleted) {
231
+ return taskResultFromCompleted;
232
+ }
233
+ throw new index_js_1.BenchmarkExecutionError('Completed benchmark but no statistics available');
234
+ }
235
+ case 'not-started':
236
+ case 'started':
237
+ throw new index_js_1.BenchmarkExecutionError(`Unexpected benchmark state: ${results.state}`);
238
+ default:
239
+ // Exhaustiveness check
240
+ throw new index_js_1.BenchmarkExecutionError(`Unknown benchmark state: ${results.state}`);
240
241
  }
241
- // Apply IQR outlier removal to raw samples
242
- const rawSamples = results.latency.samples || [];
243
- const samplesInNs = rawSamples.map((s) => s * 1e6); // Convert ms to ns
244
- const cleanedSamples = (0, stats_utils_js_1.removeOutliersIQR)(samplesInNs);
245
- const stats = (0, stats_utils_js_1.calculateStatistics)(cleanedSamples);
246
- const taskResult = {
247
- cv: stats.cv,
248
- iterations: cleanedSamples.length,
249
- marginOfError: stats.marginOfError,
250
- max: stats.max,
251
- mean: stats.mean,
252
- metadata: taskData.metadata ?? {},
253
- min: stats.min,
254
- name: taskName,
255
- opsPerSecond: results.throughput.mean || 0, // Keep tinybench's ops/sec
256
- p95: stats.p95,
257
- p99: stats.p99,
258
- stdDev: stats.stdDev,
259
- ...(taskData.tags ? { tags: taskData.tags } : {}),
260
- variance: stats.variance,
261
- };
262
- return taskResult;
263
242
  }
264
243
  catch (error) {
265
244
  const executionError = error instanceof Error ? error : new Error(String(error));
@@ -283,6 +262,59 @@ class TinybenchEngine extends engine_js_1.ModestBenchEngine {
283
262
  return errorResult;
284
263
  }
285
264
  }
265
+ /**
266
+ * Extract TaskResult from a tinybench result that has statistics
267
+ *
268
+ * Handles the discriminated union types from tinybench v6+
269
+ */
270
+ extractTaskResultFromTinybenchResult(taskName, taskData, result) {
271
+ // Only states with statistics: 'completed' and 'aborted-with-statistics'
272
+ if (result.state !== 'completed' &&
273
+ result.state !== 'aborted-with-statistics') {
274
+ return null;
275
+ }
276
+ // Apply IQR outlier removal to raw samples
277
+ // Note: samples may be undefined if retainSamples wasn't enabled
278
+ const rawSamples = result.latency.samples ?? [];
279
+ if (rawSamples.length === 0) {
280
+ // Fall back to using tinybench's calculated stats directly
281
+ return {
282
+ cv: result.latency.rme, // Use relative margin of error as CV approximation
283
+ iterations: result.latency.samplesCount,
284
+ marginOfError: result.latency.rme, // rme is already a percentage
285
+ max: result.latency.max,
286
+ mean: result.latency.mean,
287
+ metadata: taskData.metadata ?? {},
288
+ min: result.latency.min,
289
+ name: taskName,
290
+ opsPerSecond: result.throughput.mean || 0,
291
+ p95: result.latency.p99, // tinybench v6 doesn't have p95, use p99
292
+ p99: result.latency.p99,
293
+ stdDev: result.latency.sd,
294
+ ...(taskData.tags ? { tags: taskData.tags } : {}),
295
+ variance: result.latency.variance,
296
+ };
297
+ }
298
+ const samplesInNs = rawSamples.map((s) => s * 1e6); // Convert ms to ns
299
+ const cleanedSamples = (0, stats_utils_js_1.removeOutliersIQR)(samplesInNs);
300
+ const stats = (0, stats_utils_js_1.calculateStatistics)(cleanedSamples);
301
+ return {
302
+ cv: stats.cv,
303
+ iterations: cleanedSamples.length,
304
+ marginOfError: stats.marginOfError,
305
+ max: stats.max,
306
+ mean: stats.mean,
307
+ metadata: taskData.metadata ?? {},
308
+ min: stats.min,
309
+ name: taskName,
310
+ opsPerSecond: result.throughput.mean || 0,
311
+ p95: stats.p95,
312
+ p99: stats.p99,
313
+ stdDev: stats.stdDev,
314
+ ...(taskData.tags ? { tags: taskData.tags } : {}),
315
+ variance: stats.variance,
316
+ };
317
+ }
286
318
  }
287
319
  exports.TinybenchEngine = TinybenchEngine;
288
320
  //# sourceMappingURL=tinybench-engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tinybench-engine.js","sourceRoot":"","sources":["../../../src/core/engines/tinybench-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tinybench-engine.js","sourceRoot":"","sources":["../../../src/core/engines/tinybench-engine.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,11 @@ export declare class TinybenchEngine extends ModestBenchEngine {
14
14
  * Execute a single benchmark task using tinybench
15
15
  */
16
16
  protected executeBenchmarkTask(taskName: string, taskData: BenchmarkTask, config: ModestBenchConfig, _reporters?: Reporter[], signal?: AbortSignal): Promise<TaskResult>;
17
+ /**
18
+ * Extract TaskResult from a tinybench result that has statistics
19
+ *
20
+ * Handles the discriminated union types from tinybench v6+
21
+ */
22
+ private extractTaskResultFromTinybenchResult;
17
23
  }
18
24
  //# sourceMappingURL=tinybench-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tinybench-engine.d.ts","sourceRoot":"","sources":["../../../src/core/engines/tinybench-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,8BAA6B;AAO9B,OAAO,EAAE,iBAAiB,EAAE,sBAAqB;AAGjD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD;;OAEG;cACa,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,iBAAiB,EACzB,UAAU,GAAE,QAAQ,EAAO,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;CAiTvB"}
1
+ {"version":3,"file":"tinybench-engine.d.ts","sourceRoot":"","sources":["../../../src/core/engines/tinybench-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,8BAA6B;AAO9B,OAAO,EAAE,iBAAiB,EAAE,sBAAqB;AAGjD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD;;OAEG;cACa,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,iBAAiB,EACzB,UAAU,GAAE,QAAQ,EAAO,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IA2TtB;;;;OAIG;IACH,OAAO,CAAC,oCAAoC;CAyD7C"}
@@ -14,5 +14,11 @@ export declare class TinybenchEngine extends ModestBenchEngine {
14
14
  * Execute a single benchmark task using tinybench
15
15
  */
16
16
  protected executeBenchmarkTask(taskName: string, taskData: BenchmarkTask, config: ModestBenchConfig, _reporters?: Reporter[], signal?: AbortSignal): Promise<TaskResult>;
17
+ /**
18
+ * Extract TaskResult from a tinybench result that has statistics
19
+ *
20
+ * Handles the discriminated union types from tinybench v6+
21
+ */
22
+ private extractTaskResultFromTinybenchResult;
17
23
  }
18
24
  //# sourceMappingURL=tinybench-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tinybench-engine.d.ts","sourceRoot":"","sources":["../../../src/core/engines/tinybench-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,6BAA6B;AAO9B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB;AAGjD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD;;OAEG;cACa,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,iBAAiB,EACzB,UAAU,GAAE,QAAQ,EAAO,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;CAiTvB"}
1
+ {"version":3,"file":"tinybench-engine.d.ts","sourceRoot":"","sources":["../../../src/core/engines/tinybench-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,6BAA6B;AAO9B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB;AAGjD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,iBAAiB;IACpD;;OAEG;cACa,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,iBAAiB,EACzB,UAAU,GAAE,QAAQ,EAAO,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IA2TtB;;;;OAIG;IACH,OAAO,CAAC,oCAAoC;CAyD7C"}