2.0.0 • Published 9 months ago

@hugov/bench v2.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
9 months ago

@hugov/bench

  • @param {Object<number=>any>} tests with names
  • @param {number} [POOL_MS=50*minMS] nominal duration of each pooled sample to compensate for system precision rounding
  • @param {number} [Q1_PAD=3] dropped min & max sample at each tail
  • @returns {Array} IQR of the test ops/sec (Hz)

Ideas

  • pooled tests to get a minimum ms per run to compensate for the 1ms timer rounding in browsers
  • use the more stable quartiles (25%, 50%, 75%) instead of averages, errors, significance, tests and all (median of means)
  • tests are interleaved (a,b,c, b,c,a, ...) 4*Q1_PAD+1 times (default 13 times)
  • use the type returned by function and enforce that they stay the same
  • 1 initiation + 4*Q1_PAD+1 samples per tests
  • works in node and in browsers
  • tests returning a thenable are treated as async
  • each test function is run with a counter 0..n as argument
import bench from '@hugov/bench.js'

console.log( bench({
  round: i => Math.round(i+0.5),
  floor: i => Math.floor(i+0.5),
  BgInt: i => BigInt(i),
  async: i => Promise.resolve(i),
}) ) /* RESULT EXAMPLE:
round           [ '5.517e+7', '2.029e+8', '2.036e+8' ]
floor           [ '5.745e+7', '2.142e+8', '2.263e+8' ]
BgInt           [ '2.918e+7', '3.844e+7', '5.007e+7' ]
async           [ '132.8', '139.5', '143.0' ]
*/
1.2.1

10 months ago

2.0.0

9 months ago

1.2.0

11 months ago

1.1.0

1 year ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.9.0

2 years ago

0.8.0

2 years ago

0.5.0

3 years ago

0.4.0

3 years ago

0.7.0

3 years ago

0.6.0

3 years ago

0.3.0

3 years ago

0.2.0

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago

0.0.1

3 years ago