1 const Benchmark
= require('benchmark')
2 const { LIST_FORMATTER
, sleep
} = require('./benchmark-utils')
4 const suite
= new Benchmark
.Suite()
12 function dummyTimeoutBusyWait (timeoutMs
) {
13 const timeoutTimestampMs
= Date
.now() + timeoutMs
14 do {} while (Date
.now() < timeoutTimestampMs
)
20 async
function sleepTimeoutBusyWait (timeoutMs
) {
21 const timeoutTimestampMs
= Date
.now() + timeoutMs
24 } while (Date
.now() < timeoutTimestampMs
)
31 async
function divideAndConquerTimeoutBusyWait (
35 const tries
= Math
.round(timeoutMs
/ intervalMs
)
39 await
sleep(intervalMs
)
40 } while (count
<= tries
)
47 function setIntervalTimeoutBusyWait (timeoutMs
, intervalMs
= interval
) {
48 const tries
= Math
.round(timeoutMs
/ intervalMs
)
50 const triesSetInterval
= setInterval(() => {
52 if (count
=== tries
) {
53 clearInterval(triesSetInterval
)
59 .add('dummyTimeoutBusyWait', function () {
60 dummyTimeoutBusyWait(timeout
)
62 .add('sleepTimeoutBusyWait', async
function () {
63 sleepTimeoutBusyWait(timeout
)
65 .add('divideAndConquerTimeoutBusyWait', async
function () {
66 await
divideAndConquerTimeoutBusyWait(timeout
)
68 .add('setIntervalTimeoutBusyWait', function () {
69 setIntervalTimeoutBusyWait(timeout
)
71 .on('cycle', function (event
) {
72 console
.log(event
.target
.toString())
74 .on('complete', function () {
76 'Fastest is ' + LIST_FORMATTER
.format(this.filter('fastest').map('name'))
78 // eslint-disable-next-line no-process-exit