X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=busy-wait.js;h=7c8273e76e94f734ecb5e69144c2271c10953c23;hb=040c4def70a29bcd07508dcd4f78f64efefc868c;hp=9ff5a000f72463fcb600c45644e8f95deb4e05dd;hpb=a9c78d5d3394dce4eccd9f244c88879666cba677;p=benchmarks-js.git diff --git a/busy-wait.js b/busy-wait.js index 9ff5a00..7c8273e 100644 --- a/busy-wait.js +++ b/busy-wait.js @@ -4,6 +4,7 @@ const { LIST_FORMATTER, sleep } = require('./benchmark-utils') const suite = new Benchmark.Suite() const timeout = 2000 +const interval = 1000 /** * @param timeoutMs @@ -15,36 +16,52 @@ function dummyTimeoutBusyWait (timeoutMs) { /** * @param timeoutMs - * @param delayMs */ -async function divideAndConquerTimeoutBusyWait (timeoutMs, delayMs = 200) { - const tries = Math.round(timeoutMs / delayMs) +async function sleepTimeoutBusyWait (timeoutMs) { + const timeoutTimestampMs = Date.now() + timeoutMs + do { + await sleep(interval) + } while (Date.now() < timeoutTimestampMs) +} + +/** + * @param timeoutMs + * @param intervalMs + */ +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) })