X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=busy-wait.js;fp=busy-wait.js;h=9ff5a000f72463fcb600c45644e8f95deb4e05dd;hb=a9c78d5d3394dce4eccd9f244c88879666cba677;hp=ed06c52a682ab408449f273e1fe03333917ac0bc;hpb=e9bfc28e575ac3a05a748526e241cb584f55480e;p=benchmarks-js.git diff --git a/busy-wait.js b/busy-wait.js index ed06c52..9ff5a00 100644 --- a/busy-wait.js +++ b/busy-wait.js @@ -1,5 +1,5 @@ const Benchmark = require('benchmark') -const { LIST_FORMATTER } = require('./benchmark-utils') +const { LIST_FORMATTER, sleep } = require('./benchmark-utils') const suite = new Benchmark.Suite() @@ -9,8 +9,21 @@ const timeout = 2000 * @param timeoutMs */ function dummyTimeoutBusyWait (timeoutMs) { - const timeoutDateMs = Date.now() + timeoutMs - do {} while (Date.now() < timeoutDateMs) + const timeoutTimestampMs = Date.now() + timeoutMs + do {} while (Date.now() < timeoutTimestampMs) +} + +/** + * @param timeoutMs + * @param delayMs + */ +async function divideAndConquerTimeoutBusyWait (timeoutMs, delayMs = 200) { + const tries = Math.round(timeoutMs / delayMs) + let count = 0 + do { + count++ + await sleep(delayMs) + } while (count <= tries) } /** @@ -32,6 +45,9 @@ suite .add('dummyTimeoutBusyWait', function () { dummyTimeoutBusyWait(timeout) }) + .add('divideAndConquerTimeoutBusyWait', async function () { + await divideAndConquerTimeoutBusyWait(timeout) + }) .add('setIntervalTimeoutBusyWait', function () { setIntervalTimeoutBusyWait(timeout) })