summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-08-17 23:01:10 +0200
committerAnna Henningsen <anna@addaleax.net>2019-09-18 23:24:42 +0200
commit82ebcb37d6e01417bc729b8a9a949c7926d0c351 (patch)
tree029aca8898d3100e4093da4dbf3543bbddf9bb48 /benchmark
parent1ec4154e507ba71d7aefca0a6e5c155be34e989a (diff)
downloadandroid-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.js54
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);
}