| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| |
| const bench = common.createBenchmark(main, { |
| n: [1e7], |
| value: [ |
| "'777'", |
| '0o777', |
| ], |
| }, { |
| flags: ['--expose-internals'], |
| }); |
| |
| function getParseFactory() { |
| const { |
| parseFileMode, |
| } = require('internal/validators'); |
| |
| return (n) => parseFileMode(n, 'n'); |
| } |
| |
| function main({ n, value }) { |
| const parse = getParseFactory(); |
| |
| value = value === "'777'" ? '777' : 0o777; |
| |
| // Warm up. |
| const length = 1024; |
| const array = []; |
| let errCase = false; |
| |
| for (let i = 0; i < length; ++i) { |
| try { |
| array.push(parse(value)); |
| } catch (e) { |
| errCase = true; |
| array.push(e); |
| } |
| } |
| |
| bench.start(); |
| |
| for (let i = 0; i < n; ++i) { |
| const index = i % length; |
| try { |
| array[index] = parse(value); |
| } catch (e) { |
| array[index] = e; |
| } |
| } |
| |
| bench.end(n); |
| |
| // Verify the entries to prevent dead code elimination from making |
| // the benchmark invalid. |
| for (let i = 0; i < length; ++i) { |
| assert.strictEqual(typeof array[i], errCase ? 'object' : 'number'); |
| } |
| } |