diff options
author | Anna Henningsen <anna@addaleax.net> | 2019-08-17 23:01:10 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-09-18 23:24:42 +0200 |
commit | 82ebcb37d6e01417bc729b8a9a949c7926d0c351 (patch) | |
tree | 029aca8898d3100e4093da4dbf3543bbddf9bb48 /benchmark | |
parent | 1ec4154e507ba71d7aefca0a6e5c155be34e989a (diff) | |
download | android-node-v8-82ebcb37d6e01417bc729b8a9a949c7926d0c351.tar.gz android-node-v8-82ebcb37d6e01417bc729b8a9a949c7926d0c351.tar.bz2 android-node-v8-82ebcb37d6e01417bc729b8a9a949c7926d0c351.zip |
benchmark: improve process.env benchmarks
Benchmark different types of operations and make results comparable
by normalizing process.env for enumeartion.
PR-URL: https://github.com/nodejs/node/pull/29188
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/process/bench-env.js | 54 |
1 files changed, 47 insertions, 7 deletions
diff --git a/benchmark/process/bench-env.js b/benchmark/process/bench-env.js index a332d3cbd6..5df521cc95 100644 --- a/benchmark/process/bench-env.js +++ b/benchmark/process/bench-env.js @@ -3,15 +3,55 @@ const common = require('../common'); const bench = common.createBenchmark(main, { - n: [1e5], + n: [1e6], + operation: ['get', 'set', 'enumerate', 'query', 'delete'] }); -function main({ n }) { - bench.start(); - for (var i = 0; i < n; i++) { - // Access every item in object to process values. - Object.keys(process.env); +function main({ n, operation }) { + switch (operation) { + case 'get': + bench.start(); + for (let i = 0; i < n; i++) { + process.env.PATH; + } + bench.end(n); + break; + case 'set': + bench.start(); + for (let i = 0; i < n; i++) { + process.env.DUMMY = 'hello, world'; + } + bench.end(n); + break; + case 'enumerate': + // First, normalize process.env so that benchmark results are comparable. + for (const key of Object.keys(process.env)) + delete process.env[key]; + for (let i = 0; i < 64; i++) + process.env[Math.random()] = Math.random(); + + n /= 10; // Enumeration is comparatively heavy. + bench.start(); + for (let i = 0; i < n; i++) { + // Access every item in object to process values. + Object.keys(process.env); + } + bench.end(n); + break; + case 'query': + bench.start(); + for (let i = 0; i < n; i++) { + 'PATH' in process.env; + } + bench.end(n); + break; + case 'delete': + bench.start(); + for (let i = 0; i < n; i++) { + delete process.env.DUMMY; + } + bench.end(n); + break; } - bench.end(n); } |