46e5853ca0c1e1951e616cf984fae44a484e0e44
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 // eslint-disable-next-line no-empty
15 do {} while (Date
.now() < timeoutTimestampMs
)
21 async
function sleepTimeoutBusyWait (timeoutMs
) {
22 const timeoutTimestampMs
= Date
.now() + timeoutMs
25 } while (Date
.now() < timeoutTimestampMs
)
32 async
function divideAndConquerTimeoutBusyWait (
36 const tries
= Math
.round(timeoutMs
/ intervalMs
)
40 await
sleep(intervalMs
)
41 } while (count
<= tries
)
48 function setIntervalTimeoutBusyWait (timeoutMs
, intervalMs
= interval
) {
49 const tries
= Math
.round(timeoutMs
/ intervalMs
)
51 const triesSetInterval
= setInterval(() => {
53 if (count
=== tries
) {
54 clearInterval(triesSetInterval
)
60 .add('dummyTimeoutBusyWait', () => {
61 dummyTimeoutBusyWait(timeout
)
63 .add('sleepTimeoutBusyWait', async () => {
64 sleepTimeoutBusyWait(timeout
)
66 .add('divideAndConquerTimeoutBusyWait', async () => {
67 await
divideAndConquerTimeoutBusyWait(timeout
)
69 .add('setIntervalTimeoutBusyWait', () => {
70 setIntervalTimeoutBusyWait(timeout
)
72 .on('cycle', event
=> {
73 console
.log(event
.target
.toString())
75 .on('complete', function () {
77 'Fastest is ' + LIST_FORMATTER
.format(this.filter('fastest').map('name'))
79 // eslint-disable-next-line n/no-process-exit