const suite = new Benchmark.Suite()
const timeout = 2000
+const interval = 1000
/**
* @param timeoutMs
*/
-function dummyTimeoutBusyWait (timeoutMs) {
+async function sleepTimeoutBusyWait (timeoutMs) {
const timeoutTimestampMs = Date.now() + timeoutMs
- do {} while (Date.now() < timeoutTimestampMs)
+ do {
+ await sleep(interval)
+ } while (Date.now() < timeoutTimestampMs)
}
/**
* @param timeoutMs
- * @param delayMs
+ * @param intervalMs
*/
-async function divideAndConquerTimeoutBusyWait (timeoutMs, delayMs = 200) {
- const tries = Math.round(timeoutMs / delayMs)
+async function divideAndConquerTimeoutBusyWait (
+ timeoutMs,
+ intervalMs = interval
+) {
+ const tries = Math.round(timeoutMs / intervalMs)
let count = 0
do {
count++
- await sleep(delayMs)
+ await sleep(intervalMs)
} while (count <= tries)
}
/**
* @param timeoutMs
- * @param delayMs
+ * @param intervalMs
*/
-function setIntervalTimeoutBusyWait (timeoutMs, delayMs = 200) {
- const tries = Math.round(timeoutMs / delayMs)
+function setIntervalTimeoutBusyWait (timeoutMs, intervalMs = interval) {
+ const tries = Math.round(timeoutMs / intervalMs)
let count = 0
const triesSetInterval = setInterval(() => {
count++
if (count === tries) {
clearInterval(triesSetInterval)
}
- }, delayMs)
+ }, intervalMs)
}
suite
- .add('dummyTimeoutBusyWait', function () {
- dummyTimeoutBusyWait(timeout)
+ .add('sleepTimeoutBusyWait', async function () {
+ sleepTimeoutBusyWait(timeout)
})
.add('divideAndConquerTimeoutBusyWait', async function () {
await divideAndConquerTimeoutBusyWait(timeout)