-import Benchmark from 'benchmark'
-import { LIST_FORMATTER } from '../benchmarks-utils.mjs'
+import { bench, group, run } from 'tatami-ng'
+/**
+ *
+ * @param numberOfWorkers
+ * @returns
+ */
function generateWorkersArray (numberOfWorkers) {
return [...Array(numberOfWorkers).keys()]
}
let nextWorkerIndex
+/**
+ * @returns
+ */
function roundRobinTernaryOffByOne () {
nextWorkerIndex =
workers.length - 1 === nextWorkerIndex ? 0 : nextWorkerIndex + 1
return workers[nextWorkerIndex]
}
+/**
+ * @returns
+ */
function roundRobinTernaryWithNegation () {
nextWorkerIndex =
!nextWorkerIndex || workers.length - 1 === nextWorkerIndex
return workers[nextWorkerIndex]
}
+/**
+ * @returns
+ */
function roundRobinTernaryWithPreChoosing () {
const chosenWorker = workers[nextWorkerIndex]
nextWorkerIndex =
return chosenWorker
}
+/**
+ * @returns
+ */
function roundRobinIncrementModulo () {
const chosenWorker = workers[nextWorkerIndex]
nextWorkerIndex++
return chosenWorker
}
-new Benchmark.Suite('Round robin tasks distribution')
- .add('Ternary off by one', () => {
+group('Round robin tasks distribution', () => {
+ bench('Ternary off by one', () => {
nextWorkerIndex = 0
roundRobinTernaryOffByOne()
})
- .add('Ternary with negation', () => {
+ bench('Ternary with negation', () => {
nextWorkerIndex = 0
roundRobinTernaryWithNegation()
})
- .add('Ternary with pre-choosing', () => {
+ bench('Ternary with pre-choosing', () => {
nextWorkerIndex = 0
roundRobinTernaryWithPreChoosing()
})
- .add('Increment+Modulo', () => {
+ bench('Increment+Modulo', () => {
nextWorkerIndex = 0
roundRobinIncrementModulo()
})
- .on('cycle', event => {
- console.info(event.target.toString())
- })
- .on('complete', function () {
- console.info(
- 'Fastest is ' + LIST_FORMATTER.format(this.filter('fastest').map('name'))
- )
- })
- .run()
+})
+
+await run({ units: true })