From 2c49e8b537a5fba07568c2363ba6a594caa74c17 Mon Sep 17 00:00:00 2001 From: Anatoli Papirovski Date: Sun, 31 Mar 2019 12:42:26 -0700 Subject: lib: make queueMicrotask faster No longer create an additional scope within queueMicrotask in order to improve performance. PR-URL: https://github.com/nodejs/node/pull/27032 Reviewed-By: Gus Caplan Reviewed-By: Ruben Bridgewater Reviewed-By: James M Snell --- benchmark/process/queue-microtask-breadth.js | 21 +++++++++++++++++++++ benchmark/process/queue-microtask-depth.js | 17 +++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 benchmark/process/queue-microtask-breadth.js create mode 100644 benchmark/process/queue-microtask-depth.js (limited to 'benchmark') diff --git a/benchmark/process/queue-microtask-breadth.js b/benchmark/process/queue-microtask-breadth.js new file mode 100644 index 0000000000..8bb33f6fde --- /dev/null +++ b/benchmark/process/queue-microtask-breadth.js @@ -0,0 +1,21 @@ +'use strict'; + +const common = require('../common.js'); +const bench = common.createBenchmark(main, { + n: [4e5] +}); + +function main({ n }) { + var j = 0; + + function cb() { + j++; + if (j === n) + bench.end(n); + } + + bench.start(); + for (var i = 0; i < n; i++) { + queueMicrotask(cb); + } +} diff --git a/benchmark/process/queue-microtask-depth.js b/benchmark/process/queue-microtask-depth.js new file mode 100644 index 0000000000..407feb1b32 --- /dev/null +++ b/benchmark/process/queue-microtask-depth.js @@ -0,0 +1,17 @@ +'use strict'; +const common = require('../common.js'); +const bench = common.createBenchmark(main, { + n: [12e5] +}); + +function main({ n }) { + let counter = n; + bench.start(); + queueMicrotask(onNextTick); + function onNextTick() { + if (--counter) + queueMicrotask(onNextTick); + else + bench.end(n); + } +} -- cgit v1.2.3