modestbench 0.2.0 → 0.3.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 (357) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +131 -34
  3. package/dist/cli/commands/analyze.cjs +60 -0
  4. package/dist/cli/commands/analyze.cjs.map +1 -0
  5. package/dist/cli/commands/analyze.d.cts +35 -0
  6. package/dist/cli/commands/analyze.d.cts.map +1 -0
  7. package/dist/cli/commands/analyze.d.ts +35 -0
  8. package/dist/cli/commands/analyze.d.ts.map +1 -0
  9. package/dist/cli/commands/analyze.js +56 -0
  10. package/dist/cli/commands/analyze.js.map +1 -0
  11. package/dist/cli/commands/baseline.cjs +404 -0
  12. package/dist/cli/commands/baseline.cjs.map +1 -0
  13. package/dist/cli/commands/baseline.d.cts +72 -0
  14. package/dist/cli/commands/baseline.d.cts.map +1 -0
  15. package/dist/cli/commands/baseline.d.ts +72 -0
  16. package/dist/cli/commands/baseline.d.ts.map +1 -0
  17. package/dist/cli/commands/baseline.js +396 -0
  18. package/dist/cli/commands/baseline.js.map +1 -0
  19. package/dist/cli/commands/history.d.cts +1 -1
  20. package/dist/cli/commands/history.d.cts.map +1 -1
  21. package/dist/cli/commands/history.d.ts +1 -1
  22. package/dist/cli/commands/history.d.ts.map +1 -1
  23. package/dist/cli/commands/init.cjs +99 -166
  24. package/dist/cli/commands/init.cjs.map +1 -1
  25. package/dist/cli/commands/init.d.cts +4 -4
  26. package/dist/cli/commands/init.d.cts.map +1 -1
  27. package/dist/cli/commands/init.d.ts +4 -4
  28. package/dist/cli/commands/init.d.ts.map +1 -1
  29. package/dist/cli/commands/init.js +99 -166
  30. package/dist/cli/commands/init.js.map +1 -1
  31. package/dist/cli/commands/run.cjs +146 -127
  32. package/dist/cli/commands/run.cjs.map +1 -1
  33. package/dist/cli/commands/run.d.cts +16 -3
  34. package/dist/cli/commands/run.d.cts.map +1 -1
  35. package/dist/cli/commands/run.d.ts +16 -3
  36. package/dist/cli/commands/run.d.ts.map +1 -1
  37. package/dist/cli/commands/run.js +145 -93
  38. package/dist/cli/commands/run.js.map +1 -1
  39. package/dist/cli/index.cjs +583 -394
  40. package/dist/cli/index.cjs.map +1 -1
  41. package/dist/cli/index.d.cts +4 -16
  42. package/dist/cli/index.d.cts.map +1 -1
  43. package/dist/cli/index.d.ts +4 -16
  44. package/dist/cli/index.d.ts.map +1 -1
  45. package/dist/cli/index.js +575 -386
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/config/budget-schema.cjs +172 -0
  48. package/dist/config/budget-schema.cjs.map +1 -0
  49. package/dist/config/budget-schema.d.cts +59 -0
  50. package/dist/config/budget-schema.d.cts.map +1 -0
  51. package/dist/config/budget-schema.d.ts +59 -0
  52. package/dist/config/budget-schema.d.ts.map +1 -0
  53. package/dist/config/budget-schema.js +166 -0
  54. package/dist/config/budget-schema.js.map +1 -0
  55. package/dist/config/schema.cjs +182 -2
  56. package/dist/config/schema.cjs.map +1 -1
  57. package/dist/config/schema.d.cts +122 -3
  58. package/dist/config/schema.d.cts.map +1 -1
  59. package/dist/config/schema.d.ts +122 -3
  60. package/dist/config/schema.d.ts.map +1 -1
  61. package/dist/config/schema.js +180 -1
  62. package/dist/config/schema.js.map +1 -1
  63. package/dist/constants.cjs +45 -2
  64. package/dist/constants.cjs.map +1 -1
  65. package/dist/constants.d.cts +41 -0
  66. package/dist/constants.d.cts.map +1 -1
  67. package/dist/constants.d.ts +41 -0
  68. package/dist/constants.d.ts.map +1 -1
  69. package/dist/constants.js +44 -1
  70. package/dist/constants.js.map +1 -1
  71. package/dist/core/engine.cjs +114 -23
  72. package/dist/core/engine.cjs.map +1 -1
  73. package/dist/core/engine.d.cts +7 -7
  74. package/dist/core/engine.d.cts.map +1 -1
  75. package/dist/core/engine.d.ts +7 -7
  76. package/dist/core/engine.d.ts.map +1 -1
  77. package/dist/core/engine.js +115 -24
  78. package/dist/core/engine.js.map +1 -1
  79. package/dist/core/engines/accurate-engine.cjs +171 -36
  80. package/dist/core/engines/accurate-engine.cjs.map +1 -1
  81. package/dist/core/engines/accurate-engine.d.cts +5 -0
  82. package/dist/core/engines/accurate-engine.d.cts.map +1 -1
  83. package/dist/core/engines/accurate-engine.d.ts +5 -0
  84. package/dist/core/engines/accurate-engine.d.ts.map +1 -1
  85. package/dist/core/engines/accurate-engine.js +171 -36
  86. package/dist/core/engines/accurate-engine.js.map +1 -1
  87. package/dist/core/engines/tinybench-engine.cjs +3 -2
  88. package/dist/core/engines/tinybench-engine.cjs.map +1 -1
  89. package/dist/core/engines/tinybench-engine.d.cts.map +1 -1
  90. package/dist/core/engines/tinybench-engine.d.ts.map +1 -1
  91. package/dist/core/engines/tinybench-engine.js +3 -2
  92. package/dist/core/engines/tinybench-engine.js.map +1 -1
  93. package/dist/core/output-path-resolver.cjs +8 -1
  94. package/dist/core/output-path-resolver.cjs.map +1 -1
  95. package/dist/core/output-path-resolver.d.cts.map +1 -1
  96. package/dist/core/output-path-resolver.d.ts.map +1 -1
  97. package/dist/core/output-path-resolver.js +9 -2
  98. package/dist/core/output-path-resolver.js.map +1 -1
  99. package/dist/errors/base.cjs +12 -3
  100. package/dist/errors/base.cjs.map +1 -1
  101. package/dist/errors/base.d.cts +7 -0
  102. package/dist/errors/base.d.cts.map +1 -1
  103. package/dist/errors/base.d.ts +7 -0
  104. package/dist/errors/base.d.ts.map +1 -1
  105. package/dist/errors/base.js +10 -2
  106. package/dist/errors/base.js.map +1 -1
  107. package/dist/errors/budget.cjs +37 -0
  108. package/dist/errors/budget.cjs.map +1 -0
  109. package/dist/errors/budget.d.cts +31 -0
  110. package/dist/errors/budget.d.cts.map +1 -0
  111. package/dist/errors/budget.d.ts +31 -0
  112. package/dist/errors/budget.d.ts.map +1 -0
  113. package/dist/errors/budget.js +33 -0
  114. package/dist/errors/budget.js.map +1 -0
  115. package/dist/errors/index.cjs +4 -1
  116. package/dist/errors/index.cjs.map +1 -1
  117. package/dist/errors/index.d.cts +1 -0
  118. package/dist/errors/index.d.cts.map +1 -1
  119. package/dist/errors/index.d.ts +1 -0
  120. package/dist/errors/index.d.ts.map +1 -1
  121. package/dist/errors/index.js +2 -0
  122. package/dist/errors/index.js.map +1 -1
  123. package/dist/index.cjs +13 -1
  124. package/dist/index.cjs.map +1 -1
  125. package/dist/index.d.cts +5 -0
  126. package/dist/index.d.cts.map +1 -1
  127. package/dist/index.d.ts +5 -0
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +7 -0
  130. package/dist/index.js.map +1 -1
  131. package/dist/reporters/csv.cjs +37 -17
  132. package/dist/reporters/csv.cjs.map +1 -1
  133. package/dist/reporters/csv.d.cts +3 -6
  134. package/dist/reporters/csv.d.cts.map +1 -1
  135. package/dist/reporters/csv.d.ts +3 -6
  136. package/dist/reporters/csv.d.ts.map +1 -1
  137. package/dist/reporters/csv.js +37 -17
  138. package/dist/reporters/csv.js.map +1 -1
  139. package/dist/reporters/human.cjs +290 -67
  140. package/dist/reporters/human.cjs.map +1 -1
  141. package/dist/reporters/human.d.cts +25 -13
  142. package/dist/reporters/human.d.cts.map +1 -1
  143. package/dist/reporters/human.d.ts +25 -13
  144. package/dist/reporters/human.d.ts.map +1 -1
  145. package/dist/reporters/human.js +290 -67
  146. package/dist/reporters/human.js.map +1 -1
  147. package/dist/reporters/json.cjs +23 -48
  148. package/dist/reporters/json.cjs.map +1 -1
  149. package/dist/reporters/json.d.cts +2 -28
  150. package/dist/reporters/json.d.cts.map +1 -1
  151. package/dist/reporters/json.d.ts +2 -28
  152. package/dist/reporters/json.d.ts.map +1 -1
  153. package/dist/reporters/json.js +25 -50
  154. package/dist/reporters/json.js.map +1 -1
  155. package/dist/reporters/profile-human.cjs +154 -0
  156. package/dist/reporters/profile-human.cjs.map +1 -0
  157. package/dist/reporters/profile-human.d.cts +44 -0
  158. package/dist/reporters/profile-human.d.cts.map +1 -0
  159. package/dist/reporters/profile-human.d.ts +44 -0
  160. package/dist/reporters/profile-human.d.ts.map +1 -0
  161. package/dist/reporters/profile-human.js +147 -0
  162. package/dist/reporters/profile-human.js.map +1 -0
  163. package/dist/reporters/simple.cjs +67 -45
  164. package/dist/reporters/simple.cjs.map +1 -1
  165. package/dist/reporters/simple.d.cts +14 -14
  166. package/dist/reporters/simple.d.cts.map +1 -1
  167. package/dist/reporters/simple.d.ts +14 -14
  168. package/dist/reporters/simple.d.ts.map +1 -1
  169. package/dist/reporters/simple.js +67 -45
  170. package/dist/reporters/simple.js.map +1 -1
  171. package/dist/schema/modestbench-config.schema.json +153 -0
  172. package/dist/services/baseline-storage.cjs +151 -0
  173. package/dist/services/baseline-storage.cjs.map +1 -0
  174. package/dist/services/baseline-storage.d.cts +55 -0
  175. package/dist/services/baseline-storage.d.cts.map +1 -0
  176. package/dist/services/baseline-storage.d.ts +55 -0
  177. package/dist/services/baseline-storage.d.ts.map +1 -0
  178. package/dist/services/baseline-storage.js +147 -0
  179. package/dist/services/baseline-storage.js.map +1 -0
  180. package/dist/services/budget-evaluator.cjs +146 -0
  181. package/dist/services/budget-evaluator.cjs.map +1 -0
  182. package/dist/services/budget-evaluator.d.cts +29 -0
  183. package/dist/services/budget-evaluator.d.cts.map +1 -0
  184. package/dist/services/budget-evaluator.d.ts +29 -0
  185. package/dist/services/budget-evaluator.d.ts.map +1 -0
  186. package/dist/services/budget-evaluator.js +142 -0
  187. package/dist/services/budget-evaluator.js.map +1 -0
  188. package/dist/services/config-manager.cjs +24 -10
  189. package/dist/services/config-manager.cjs.map +1 -1
  190. package/dist/services/config-manager.d.cts +6 -1
  191. package/dist/services/config-manager.d.cts.map +1 -1
  192. package/dist/services/config-manager.d.ts +6 -1
  193. package/dist/services/config-manager.d.ts.map +1 -1
  194. package/dist/services/config-manager.js +24 -10
  195. package/dist/services/config-manager.js.map +1 -1
  196. package/dist/services/file-loader.cjs +3 -6
  197. package/dist/services/file-loader.cjs.map +1 -1
  198. package/dist/services/file-loader.d.cts.map +1 -1
  199. package/dist/services/file-loader.d.ts.map +1 -1
  200. package/dist/services/file-loader.js +3 -6
  201. package/dist/services/file-loader.js.map +1 -1
  202. package/dist/services/profiler/profile-filter.cjs +116 -0
  203. package/dist/services/profiler/profile-filter.cjs.map +1 -0
  204. package/dist/services/profiler/profile-filter.d.cts +20 -0
  205. package/dist/services/profiler/profile-filter.d.cts.map +1 -0
  206. package/dist/services/profiler/profile-filter.d.ts +20 -0
  207. package/dist/services/profiler/profile-filter.d.ts.map +1 -0
  208. package/dist/services/profiler/profile-filter.js +112 -0
  209. package/dist/services/profiler/profile-filter.js.map +1 -0
  210. package/dist/services/profiler/profile-parser.cjs +139 -0
  211. package/dist/services/profiler/profile-parser.cjs.map +1 -0
  212. package/dist/services/profiler/profile-parser.d.cts +18 -0
  213. package/dist/services/profiler/profile-parser.d.cts.map +1 -0
  214. package/dist/services/profiler/profile-parser.d.ts +18 -0
  215. package/dist/services/profiler/profile-parser.d.ts.map +1 -0
  216. package/dist/services/profiler/profile-parser.js +132 -0
  217. package/dist/services/profiler/profile-parser.js.map +1 -0
  218. package/dist/services/profiler/profile-runner.cjs +90 -0
  219. package/dist/services/profiler/profile-runner.cjs.map +1 -0
  220. package/dist/services/profiler/profile-runner.d.cts +29 -0
  221. package/dist/services/profiler/profile-runner.d.cts.map +1 -0
  222. package/dist/services/profiler/profile-runner.d.ts +29 -0
  223. package/dist/services/profiler/profile-runner.d.ts.map +1 -0
  224. package/dist/services/profiler/profile-runner.js +86 -0
  225. package/dist/services/profiler/profile-runner.js.map +1 -0
  226. package/dist/services/progress-manager.cjs +10 -2
  227. package/dist/services/progress-manager.cjs.map +1 -1
  228. package/dist/services/progress-manager.d.cts +2 -0
  229. package/dist/services/progress-manager.d.cts.map +1 -1
  230. package/dist/services/progress-manager.d.ts +2 -0
  231. package/dist/services/progress-manager.d.ts.map +1 -1
  232. package/dist/services/progress-manager.js +10 -2
  233. package/dist/services/progress-manager.js.map +1 -1
  234. package/dist/services/reporter-registry.cjs +18 -24
  235. package/dist/services/reporter-registry.cjs.map +1 -1
  236. package/dist/services/reporter-registry.d.cts +18 -40
  237. package/dist/services/reporter-registry.d.cts.map +1 -1
  238. package/dist/services/reporter-registry.d.ts +18 -40
  239. package/dist/services/reporter-registry.d.ts.map +1 -1
  240. package/dist/services/reporter-registry.js +18 -24
  241. package/dist/services/reporter-registry.js.map +1 -1
  242. package/dist/types/budgets.cjs +8 -0
  243. package/dist/types/budgets.cjs.map +1 -0
  244. package/dist/types/budgets.d.cts +149 -0
  245. package/dist/types/budgets.d.cts.map +1 -0
  246. package/dist/types/budgets.d.ts +149 -0
  247. package/dist/types/budgets.d.ts.map +1 -0
  248. package/dist/types/budgets.js +7 -0
  249. package/dist/types/budgets.js.map +1 -0
  250. package/dist/types/cli.cjs +2 -11
  251. package/dist/types/cli.cjs.map +1 -1
  252. package/dist/types/cli.d.cts +3 -227
  253. package/dist/types/cli.d.cts.map +1 -1
  254. package/dist/types/cli.d.ts +3 -227
  255. package/dist/types/cli.d.ts.map +1 -1
  256. package/dist/types/cli.js +2 -11
  257. package/dist/types/cli.js.map +1 -1
  258. package/dist/types/core.cjs +6 -1
  259. package/dist/types/core.cjs.map +1 -1
  260. package/dist/types/core.d.cts +15 -2
  261. package/dist/types/core.d.cts.map +1 -1
  262. package/dist/types/core.d.ts +15 -2
  263. package/dist/types/core.d.ts.map +1 -1
  264. package/dist/types/core.js +2 -1
  265. package/dist/types/core.js.map +1 -1
  266. package/dist/types/index.cjs +5 -0
  267. package/dist/types/index.cjs.map +1 -1
  268. package/dist/types/index.d.cts +2 -0
  269. package/dist/types/index.d.cts.map +1 -1
  270. package/dist/types/index.d.ts +2 -0
  271. package/dist/types/index.d.ts.map +1 -1
  272. package/dist/types/index.js +2 -0
  273. package/dist/types/index.js.map +1 -1
  274. package/dist/types/interfaces.d.cts +19 -8
  275. package/dist/types/interfaces.d.cts.map +1 -1
  276. package/dist/types/interfaces.d.ts +19 -8
  277. package/dist/types/interfaces.d.ts.map +1 -1
  278. package/dist/types/profiler.cjs +11 -0
  279. package/dist/types/profiler.cjs.map +1 -0
  280. package/dist/types/profiler.d.cts +102 -0
  281. package/dist/types/profiler.d.cts.map +1 -0
  282. package/dist/types/profiler.d.ts +102 -0
  283. package/dist/types/profiler.d.ts.map +1 -0
  284. package/dist/types/profiler.js +10 -0
  285. package/dist/types/profiler.js.map +1 -0
  286. package/dist/types/utility.cjs.map +1 -1
  287. package/dist/types/utility.d.cts +0 -8
  288. package/dist/types/utility.d.cts.map +1 -1
  289. package/dist/types/utility.d.ts +0 -8
  290. package/dist/types/utility.d.ts.map +1 -1
  291. package/dist/types/utility.js.map +1 -1
  292. package/dist/utils/identifiers.cjs +32 -0
  293. package/dist/utils/identifiers.cjs.map +1 -0
  294. package/dist/utils/identifiers.d.cts +32 -0
  295. package/dist/utils/identifiers.d.cts.map +1 -0
  296. package/dist/utils/identifiers.d.ts +32 -0
  297. package/dist/utils/identifiers.d.ts.map +1 -0
  298. package/dist/utils/identifiers.js +27 -0
  299. package/dist/utils/identifiers.js.map +1 -0
  300. package/dist/utils/package.cjs +40 -0
  301. package/dist/utils/package.cjs.map +1 -0
  302. package/dist/utils/package.d.cts +15 -0
  303. package/dist/utils/package.d.cts.map +1 -0
  304. package/dist/utils/package.d.ts +15 -0
  305. package/dist/utils/package.d.ts.map +1 -0
  306. package/dist/utils/package.js +33 -0
  307. package/dist/utils/package.js.map +1 -0
  308. package/dist/utils/type-guards.cjs +48 -0
  309. package/dist/utils/type-guards.cjs.map +1 -0
  310. package/dist/utils/type-guards.d.cts +22 -0
  311. package/dist/utils/type-guards.d.cts.map +1 -0
  312. package/dist/utils/type-guards.d.ts +22 -0
  313. package/dist/utils/type-guards.d.ts.map +1 -0
  314. package/dist/utils/type-guards.js +43 -0
  315. package/dist/utils/type-guards.js.map +1 -0
  316. package/package.json +18 -19
  317. package/src/cli/commands/analyze.ts +101 -0
  318. package/src/cli/commands/baseline.ts +577 -0
  319. package/src/cli/commands/history.ts +1 -1
  320. package/src/cli/commands/init.ts +116 -194
  321. package/src/cli/commands/run.ts +183 -113
  322. package/src/cli/index.ts +425 -183
  323. package/src/config/budget-schema.ts +189 -0
  324. package/src/config/schema.ts +260 -1
  325. package/src/constants.ts +53 -1
  326. package/src/core/engine.ts +169 -22
  327. package/src/core/engines/accurate-engine.ts +195 -44
  328. package/src/core/engines/tinybench-engine.ts +3 -2
  329. package/src/core/output-path-resolver.ts +10 -2
  330. package/src/errors/base.ts +11 -2
  331. package/src/errors/budget.ts +38 -0
  332. package/src/errors/index.ts +3 -0
  333. package/src/index.ts +9 -0
  334. package/src/reporters/csv.ts +54 -25
  335. package/src/reporters/human.ts +434 -115
  336. package/src/reporters/json.ts +26 -71
  337. package/src/reporters/profile-human.ts +210 -0
  338. package/src/reporters/simple.ts +88 -54
  339. package/src/services/baseline-storage.ts +199 -0
  340. package/src/services/budget-evaluator.ts +182 -0
  341. package/src/services/config-manager.ts +24 -9
  342. package/src/services/file-loader.ts +3 -6
  343. package/src/services/profiler/profile-filter.ts +147 -0
  344. package/src/services/profiler/profile-parser.ts +194 -0
  345. package/src/services/profiler/profile-runner.ts +121 -0
  346. package/src/services/progress-manager.ts +12 -2
  347. package/src/services/reporter-registry.ts +46 -81
  348. package/src/types/budgets.ts +180 -0
  349. package/src/types/cli.ts +5 -238
  350. package/src/types/core.ts +52 -10
  351. package/src/types/index.ts +5 -0
  352. package/src/types/interfaces.ts +24 -6
  353. package/src/types/profiler.ts +135 -0
  354. package/src/types/utility.ts +0 -10
  355. package/src/utils/identifiers.ts +58 -0
  356. package/src/utils/package.ts +35 -0
  357. package/src/utils/type-guards.ts +51 -0
@@ -33,6 +33,11 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
33
33
  * and excessive memory usage
34
34
  */
35
35
  static MAX_ITERATIONS_PER_ROUND = 10000;
36
+ /**
37
+ * Maximum iterations per round for async functions (much lower due to
38
+ * sequential await overhead)
39
+ */
40
+ static MAX_ITERATIONS_PER_ROUND_ASYNC = 100;
36
41
  hasCheckedNativeSyntax = false;
37
42
  nativeSyntaxErrorShown = false;
38
43
  nativeSyntaxSupported = false;
@@ -46,24 +51,48 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
46
51
  if (!taskData.fn || typeof taskData.fn !== 'function') {
47
52
  throw new index_js_1.StructureValidationError('Benchmark task must have a "fn" function property');
48
53
  }
54
+ // Detect if function is async by testing it
55
+ const testResult = taskData.fn();
56
+ const isAsync = testResult != null &&
57
+ typeof testResult === 'object' &&
58
+ 'then' in testResult &&
59
+ typeof testResult.then === 'function';
60
+ if (isAsync) {
61
+ // Clean up the test promise/thenable
62
+ const thenable = testResult;
63
+ thenable.then(() => {
64
+ /* ignore */
65
+ }, () => {
66
+ /* ignore */
67
+ });
68
+ }
69
+ // For async functions, cap iterations to prevent excessive sequential rounds
70
+ // Even with limitBy: 'iterations', 5000 samples = 5000 rounds of async calls
71
+ // which is impractically slow. Cap at 1000 for reasonable balance.
72
+ const effectiveConfig = isAsync && config.iterations > 1000
73
+ ? { ...config, iterations: 1000 }
74
+ : config;
49
75
  // Check for V8 native syntax support
50
76
  const useOptGuards = this.checkNativeSyntax();
51
77
  // Show helpful error if native syntax not available
52
78
  if (!useOptGuards && !this.nativeSyntaxErrorShown) {
53
79
  if (!config.quiet) {
54
- console.warn('\n⚠️ AccurateEngine requires --allow-natives-syntax flag for best accuracy.', '\nRunning in fallback mode (reduced accuracy).', '\n\nTo enable V8 optimization guards:', '\n node --allow-natives-syntax --test', '\n or add to package.json: "test": "node --allow-natives-syntax ..."', '\n');
80
+ // Get the path to the modestbench executable from process.argv
81
+ const modestbenchPath = process.argv[1] || 'modestbench';
82
+ console.warn('\n⚠️ AccurateEngine recommends --allow-natives-syntax flag for best accuracy.', '\nRunning in fallback mode (reduced accuracy).', '\n\nTo enable V8 optimization guards:', `\n node --allow-natives-syntax ${modestbenchPath}`, '\n');
55
83
  }
56
84
  this.nativeSyntaxErrorShown = true;
57
85
  }
58
- // Execute benchmark with or without opt guards
86
+ // Execute benchmark with or without opt guards, and with async support
59
87
  const rawSamples = useOptGuards
60
- ? await this.executeBenchmarkWithOptGuards(taskData.fn, config, signal)
61
- : await this.executeBenchmarkBasic(taskData.fn, config, signal);
62
- // Check if aborted
88
+ ? await this.executeBenchmarkWithOptGuards(taskData.fn, effectiveConfig, signal, isAsync)
89
+ : await this.executeBenchmarkBasic(taskData.fn, effectiveConfig, signal, isAsync);
90
+ // Check if aborted - return minimal valid result marked as aborted
91
+ // (abort message is shown at run level, not per-task)
63
92
  if (signal?.aborted) {
64
93
  return {
94
+ aborted: true,
65
95
  cv: 0,
66
- error: new Error('Benchmark aborted by user signal'),
67
96
  iterations: rawSamples.length,
68
97
  marginOfError: 0,
69
98
  max: 0,
@@ -128,22 +157,34 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
128
157
  * Calculate initial iterations based on benchmark characteristics Adapted
129
158
  * from bench-node's getInitialIterations algorithm
130
159
  */
131
- async calculateInitialIterations(fn, targetTime) {
160
+ async calculateInitialIterations(fn, targetTime, // in seconds
161
+ isAsync = false) {
132
162
  // eslint-disable-next-line @typescript-eslint/unbound-method
133
163
  const timer = process.hrtime.bigint;
134
164
  const MIN_RESOLUTION = 0.5; // nanoseconds
135
165
  const SCALE = 1e9; // ns to seconds
136
- // Run a quick test with 30 iterations
137
- const testIterations = 30;
166
+ // Run a quick test with 30 iterations (fewer for async to keep it fast)
167
+ const testIterations = isAsync ? 10 : 30;
138
168
  const start = timer();
139
- for (let i = 0; i < testIterations; i++) {
140
- fn();
169
+ if (isAsync) {
170
+ for (let i = 0; i < testIterations; i++) {
171
+ await fn();
172
+ }
173
+ }
174
+ else {
175
+ for (let i = 0; i < testIterations; i++) {
176
+ fn();
177
+ }
141
178
  }
142
179
  const duration = Number(timer() - start);
143
180
  const durationPerOp = Math.max(MIN_RESOLUTION, duration / testIterations);
144
181
  // Calculate how many iterations we need for targetTime
145
182
  const totalOpsForTargetTime = targetTime / (durationPerOp / SCALE);
146
- return Math.min(Number.MAX_SAFE_INTEGER, Math.max(1, Math.round(totalOpsForTargetTime)));
183
+ // Use appropriate max based on sync/async
184
+ const maxIterations = isAsync
185
+ ? AccurateEngine.MAX_ITERATIONS_PER_ROUND_ASYNC
186
+ : AccurateEngine.MAX_ITERATIONS_PER_ROUND;
187
+ return Math.min(maxIterations, Math.max(1, Math.round(totalOpsForTargetTime)));
147
188
  }
148
189
  /**
149
190
  * Check if V8 native syntax is available
@@ -170,27 +211,67 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
170
211
  /**
171
212
  * Execute benchmark WITHOUT V8 optimization guards (fallback)
172
213
  */
173
- async executeBenchmarkBasic(fn, config, signal) {
214
+ async executeBenchmarkBasic(fn, config, signal, isAsync = false) {
174
215
  // eslint-disable-next-line @typescript-eslint/unbound-method
175
216
  const timer = process.hrtime.bigint;
176
217
  const samples = [];
177
218
  const SCALE = 1e9;
178
219
  const targetTime = config.time / 1000;
179
- const initialIterations = await this.calculateInitialIterations(fn, targetTime);
220
+ const initialIterations = await this.calculateInitialIterations(fn, targetTime, isAsync);
180
221
  if (config.warmup > 0) {
181
222
  const warmupTime = Math.min(config.warmup / 1000, 0.05);
182
- await this.runWarmup(fn, initialIterations, warmupTime);
223
+ await this.runWarmup(fn, initialIterations, warmupTime, isAsync);
183
224
  }
184
225
  const maxDuration = (config.time / 1000) * SCALE;
185
226
  let timeSpent = 0;
186
227
  let iterations = initialIterations;
187
- while (timeSpent < maxDuration || samples.length < config.iterations) {
228
+ // Use appropriate max based on sync/async
229
+ const maxIterations = isAsync
230
+ ? AccurateEngine.MAX_ITERATIONS_PER_ROUND_ASYNC
231
+ : AccurateEngine.MAX_ITERATIONS_PER_ROUND;
232
+ // Determine loop condition based on limitBy setting
233
+ const shouldContinue = () => {
188
234
  if (signal?.aborted) {
189
- break;
235
+ return false;
190
236
  }
237
+ const timeRemaining = timeSpent < maxDuration;
238
+ const samplesRemaining = samples.length < config.iterations;
239
+ switch (config.limitBy) {
240
+ case 'all':
241
+ return timeRemaining && samplesRemaining;
242
+ case 'any':
243
+ return timeRemaining || samplesRemaining;
244
+ case 'iterations':
245
+ return samplesRemaining;
246
+ case 'time':
247
+ return timeRemaining;
248
+ default:
249
+ return timeRemaining && samplesRemaining;
250
+ }
251
+ };
252
+ while (shouldContinue()) {
191
253
  const start = timer();
192
- for (let i = 0; i < iterations; i++) {
193
- fn();
254
+ if (isAsync) {
255
+ // For async functions, await each call individually and check for abort
256
+ for (let i = 0; i < iterations; i++) {
257
+ if (signal?.aborted) {
258
+ break;
259
+ }
260
+ await fn();
261
+ }
262
+ }
263
+ else {
264
+ // For sync functions, check for abort every 50 iterations
265
+ for (let i = 0; i < iterations; i++) {
266
+ if (i % 50 === 0 && signal?.aborted) {
267
+ break;
268
+ }
269
+ fn();
270
+ }
271
+ }
272
+ // Early exit if aborted during inner loop
273
+ if (signal?.aborted) {
274
+ break;
194
275
  }
195
276
  const duration = Number(timer() - start);
196
277
  const durationPerOp = duration / iterations;
@@ -201,25 +282,25 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
201
282
  }
202
283
  const remainingTime = Math.max(0, (maxDuration - timeSpent) / SCALE);
203
284
  iterations = Math.round(remainingTime / (durationPerOp / SCALE));
204
- iterations = Math.max(1, Math.min(AccurateEngine.MAX_ITERATIONS_PER_ROUND, iterations));
285
+ iterations = Math.max(1, Math.min(maxIterations, iterations));
205
286
  }
206
287
  return samples;
207
288
  }
208
289
  /**
209
290
  * Execute benchmark WITH V8 optimization guards (more accurate)
210
291
  */
211
- async executeBenchmarkWithOptGuards(fn, config, signal) {
292
+ async executeBenchmarkWithOptGuards(fn, config, signal, isAsync = false) {
212
293
  // eslint-disable-next-line @typescript-eslint/unbound-method
213
294
  const timer = process.hrtime.bigint;
214
295
  const samples = [];
215
296
  const SCALE = 1e9;
216
297
  // Calculate iterations based on config
217
298
  const targetTime = config.time / 1000; // ms to seconds
218
- const initialIterations = await this.calculateInitialIterations(fn, targetTime);
299
+ const initialIterations = await this.calculateInitialIterations(fn, targetTime, isAsync);
219
300
  // Run warmup
220
301
  if (config.warmup > 0) {
221
302
  const warmupTime = Math.min(config.warmup / 1000, 0.05); // Max 50ms warmup
222
- await this.runWarmup(fn, initialIterations, warmupTime);
303
+ await this.runWarmup(fn, initialIterations, warmupTime, isAsync);
223
304
  }
224
305
  // Create DoNotOptimize wrapper using V8 intrinsics
225
306
  // This prevents V8 from optimizing away the benchmark code
@@ -232,15 +313,56 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
232
313
  const maxDuration = (config.time / 1000) * SCALE;
233
314
  let timeSpent = 0;
234
315
  let iterations = initialIterations;
235
- // Main benchmark loop
236
- while (timeSpent < maxDuration || samples.length < config.iterations) {
316
+ // Use appropriate max based on sync/async
317
+ const maxIterations = isAsync
318
+ ? AccurateEngine.MAX_ITERATIONS_PER_ROUND_ASYNC
319
+ : AccurateEngine.MAX_ITERATIONS_PER_ROUND;
320
+ // Determine loop condition based on limitBy setting
321
+ const shouldContinue = () => {
237
322
  if (signal?.aborted) {
238
- break;
323
+ return false;
324
+ }
325
+ const timeRemaining = timeSpent < maxDuration;
326
+ const samplesRemaining = samples.length < config.iterations;
327
+ switch (config.limitBy) {
328
+ case 'all':
329
+ return timeRemaining && samplesRemaining;
330
+ case 'any':
331
+ return timeRemaining || samplesRemaining;
332
+ case 'iterations':
333
+ return samplesRemaining;
334
+ case 'time':
335
+ return timeRemaining;
336
+ default:
337
+ return timeRemaining && samplesRemaining;
239
338
  }
339
+ };
340
+ // Main benchmark loop
341
+ while (shouldContinue()) {
240
342
  const start = timer();
241
- for (let i = 0; i < iterations; i++) {
242
- const result = fn();
243
- guardedDoNotOptimize(result); // Prevent optimization
343
+ if (isAsync) {
344
+ // For async functions, await each call individually and check for abort
345
+ for (let i = 0; i < iterations; i++) {
346
+ if (signal?.aborted) {
347
+ break;
348
+ }
349
+ const result = await fn();
350
+ guardedDoNotOptimize(result); // Prevent optimization
351
+ }
352
+ }
353
+ else {
354
+ // For sync functions, check for abort every 50 iterations
355
+ for (let i = 0; i < iterations; i++) {
356
+ if (i % 50 === 0 && signal?.aborted) {
357
+ break;
358
+ }
359
+ const result = fn();
360
+ guardedDoNotOptimize(result); // Prevent optimization
361
+ }
362
+ }
363
+ // Early exit if aborted during inner loop
364
+ if (signal?.aborted) {
365
+ break;
244
366
  }
245
367
  const duration = Number(timer() - start);
246
368
  const durationPerOp = duration / iterations;
@@ -253,7 +375,7 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
253
375
  // Adjust iterations for next round
254
376
  const remainingTime = Math.max(0, (maxDuration - timeSpent) / SCALE);
255
377
  iterations = Math.round(remainingTime / (durationPerOp / SCALE));
256
- iterations = Math.max(1, Math.min(AccurateEngine.MAX_ITERATIONS_PER_ROUND, iterations));
378
+ iterations = Math.max(1, Math.min(maxIterations, iterations));
257
379
  }
258
380
  return samples;
259
381
  }
@@ -262,21 +384,34 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
262
384
  */
263
385
  async runWarmup(
264
386
  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
265
- fn, initialIterations, warmupTime) {
387
+ fn, initialIterations, warmupTime, // in seconds
388
+ isAsync = false) {
266
389
  // eslint-disable-next-line @typescript-eslint/unbound-method
267
390
  const timer = process.hrtime.bigint;
268
391
  const MIN_RESOLUTION = 0.5;
269
392
  const SCALE = 1e9;
270
393
  const maxDuration = warmupTime * SCALE;
271
394
  const minSamples = 10;
395
+ // Use appropriate max based on sync/async
396
+ const maxIterations = isAsync
397
+ ? AccurateEngine.MAX_ITERATIONS_PER_ROUND_ASYNC
398
+ : AccurateEngine.MAX_ITERATIONS_PER_ROUND;
272
399
  let timeSpent = 0n;
273
400
  let samples = 0;
274
- let iterations = Math.min(initialIterations, AccurateEngine.MAX_ITERATIONS_PER_ROUND);
401
+ let iterations = Math.min(initialIterations, maxIterations);
275
402
  while (Number(timeSpent) < maxDuration || samples <= minSamples) {
276
403
  const start = timer();
277
- for (let i = 0; i < iterations; i++) {
278
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
279
- fn();
404
+ if (isAsync) {
405
+ for (let i = 0; i < iterations; i++) {
406
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
407
+ await fn();
408
+ }
409
+ }
410
+ else {
411
+ for (let i = 0; i < iterations; i++) {
412
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
413
+ fn();
414
+ }
280
415
  }
281
416
  const duration = timer() - start;
282
417
  timeSpent += duration;
@@ -285,7 +420,7 @@ class AccurateEngine extends engine_js_1.ModestBenchEngine {
285
420
  const durationPerOp = Math.max(MIN_RESOLUTION, Number(duration) / iterations);
286
421
  const remainingTime = Math.max(0, (maxDuration - Number(timeSpent)) / SCALE);
287
422
  iterations = Math.round(remainingTime / (durationPerOp / SCALE));
288
- iterations = Math.max(1, Math.min(AccurateEngine.MAX_ITERATIONS_PER_ROUND, iterations));
423
+ iterations = Math.max(1, Math.min(maxIterations, iterations));
289
424
  }
290
425
  }
291
426
  }
@@ -1 +1 @@
1
- {"version":3,"file":"accurate-engine.js","sourceRoot":"","sources":["../../../src/core/engines/accurate-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accurate-engine.js","sourceRoot":"","sources":["../../../src/core/engines/accurate-engine.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,11 @@ export declare class AccurateEngine extends ModestBenchEngine {
29
29
  * and excessive memory usage
30
30
  */
31
31
  private static readonly MAX_ITERATIONS_PER_ROUND;
32
+ /**
33
+ * Maximum iterations per round for async functions (much lower due to
34
+ * sequential await overhead)
35
+ */
36
+ private static readonly MAX_ITERATIONS_PER_ROUND_ASYNC;
32
37
  private hasCheckedNativeSyntax;
33
38
  private nativeSyntaxErrorShown;
34
39
  private nativeSyntaxSupported;
@@ -1 +1 @@
1
- {"version":3,"file":"accurate-engine.d.ts","sourceRoot":"","sources":["../../../src/core/engines/accurate-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,8BAA6B;AAG9B,OAAO,EAAE,iBAAiB,EAAE,sBAAqB;AAGjD;;GAEG;AACH,qBAAa,cAAe,SAAQ,iBAAiB;IACnD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAEzD,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,qBAAqB,CAAS;IAEtC;;;;OAIG;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;IAsGtB;;;OAGG;YACW,0BAA0B;IA6BxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;YACW,qBAAqB;IAyDnC;;OAEG;YACW,6BAA6B;IA6E3C;;OAEG;YACW,SAAS;CAgDxB"}
1
+ {"version":3,"file":"accurate-engine.d.ts","sourceRoot":"","sources":["../../../src/core/engines/accurate-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,8BAA6B;AAG9B,OAAO,EAAE,iBAAiB,EAAE,sBAAqB;AAGjD;;GAEG;AACH,qBAAa,cAAe,SAAQ,iBAAiB;IACnD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAEzD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAO;IAE7D,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,qBAAqB,CAAS;IAEtC;;;;OAIG;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;IA+ItB;;;OAGG;YACW,0BAA0B;IAyCxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;YACW,qBAAqB;IAmGnC;;OAEG;YACW,6BAA6B;IAwH3C;;OAEG;YACW,SAAS;CAuDxB"}
@@ -29,6 +29,11 @@ export declare class AccurateEngine extends ModestBenchEngine {
29
29
  * and excessive memory usage
30
30
  */
31
31
  private static readonly MAX_ITERATIONS_PER_ROUND;
32
+ /**
33
+ * Maximum iterations per round for async functions (much lower due to
34
+ * sequential await overhead)
35
+ */
36
+ private static readonly MAX_ITERATIONS_PER_ROUND_ASYNC;
32
37
  private hasCheckedNativeSyntax;
33
38
  private nativeSyntaxErrorShown;
34
39
  private nativeSyntaxSupported;
@@ -1 +1 @@
1
- {"version":3,"file":"accurate-engine.d.ts","sourceRoot":"","sources":["../../../src/core/engines/accurate-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,6BAA6B;AAG9B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB;AAGjD;;GAEG;AACH,qBAAa,cAAe,SAAQ,iBAAiB;IACnD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAEzD,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,qBAAqB,CAAS;IAEtC;;;;OAIG;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;IAsGtB;;;OAGG;YACW,0BAA0B;IA6BxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;YACW,qBAAqB;IAyDnC;;OAEG;YACW,6BAA6B;IA6E3C;;OAEG;YACW,SAAS;CAgDxB"}
1
+ {"version":3,"file":"accurate-engine.d.ts","sourceRoot":"","sources":["../../../src/core/engines/accurate-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACX,6BAA6B;AAG9B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB;AAGjD;;GAEG;AACH,qBAAa,cAAe,SAAQ,iBAAiB;IACnD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAEzD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAO;IAE7D,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,sBAAsB,CAAS;IAEvC,OAAO,CAAC,qBAAqB,CAAS;IAEtC;;;;OAIG;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;IA+ItB;;;OAGG;YACW,0BAA0B;IAyCxC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;YACW,qBAAqB;IAmGnC;;OAEG;YACW,6BAA6B;IAwH3C;;OAEG;YACW,SAAS;CAuDxB"}