| 'use strict'; |
| |
| const common = require('../common'); |
| |
| const bench = common.createBenchmark(main, { |
| n: [1e6], |
| operation: ['get', 'set', 'enumerate', 'query', 'delete'] |
| }); |
| |
| |
| 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; |
| } |
| } |