-import Benchmark from 'benny'
+import { bench, group, run } from 'tatami-ng'
+
import { generateRandomNumberArray } from './benchmark-utils.mjs'
const size = 10000
* @returns
*/
function loopMin (values) {
- let min = Infinity
+ let minimum = Number.POSITIVE_INFINITY
for (const value of values) {
- if (value < min) min = value
+ if (value < minimum) minimum = value
}
- return min
+ return minimum
}
/**
* @returns
*/
function reduceTernaryMin (values) {
- return values.reduce((a, b) => (a < b ? a : b), Infinity)
+ return values.reduce(
+ (minimum, num) => (minimum < num ? minimum : num),
+ Number.POSITIVE_INFINITY
+ )
}
/**
* @returns
*/
function reduceMathMin (values) {
- return values.reduce((a, b) => Math.min(a, b), Infinity)
+ return values.reduce(
+ (minimum, num) => Math.min(minimum, num),
+ Number.POSITIVE_INFINITY
+ )
}
/**
return values.sort((a, b) => a - b)[0]
}
-Benchmark.suite(
- `Min from ${size} numbers`,
- Benchmark.add('Math.min', () => {
+group(`Min from ${size} numbers`, () => {
+ bench('Math.min', () => {
Math.min(...testArray)
- }),
- Benchmark.add('loopMin', () => {
+ })
+ bench('loopMin', () => {
loopMin(testArray)
- }),
- Benchmark.add('reduceTernaryMin', () => {
+ })
+ bench('reduceTernaryMin', () => {
reduceTernaryMin(testArray)
- }),
- Benchmark.add('reduceMath.min', () => {
+ })
+ bench('reduceMathMin', () => {
reduceMathMin(testArray)
- }),
- Benchmark.add('sortMin', () => {
+ })
+ bench('sortMin', () => {
sortMin(testArray)
- }),
- Benchmark.cycle(),
- Benchmark.complete(),
- Benchmark.save({ file: 'min', format: 'json', details: true }),
- Benchmark.save({ file: 'min', format: 'chart.html', details: true }),
- Benchmark.save({ file: 'min', format: 'table.html', details: true })
-).catch((err) => {
- console.error(err)
+ })
+})
+
+await run({
+ units: true,
})