diff --git a/benchmark/process/bench-hrtime.js b/benchmark/process/bench-hrtime.js index 9152a32b22d213..e704087b692e68 100644 --- a/benchmark/process/bench-hrtime.js +++ b/benchmark/process/bench-hrtime.js @@ -5,27 +5,38 @@ const assert = require('assert'); const bench = common.createBenchmark(main, { n: [1e6], - type: ['raw', 'diff'] + type: ['raw', 'diff', 'bigint'] }); function main({ n, type }) { const hrtime = process.hrtime; - var noDead = hrtime(); + var noDead = type === 'bigint' ? hrtime.bigint() : hrtime(); var i; - if (type === 'raw') { - bench.start(); - for (i = 0; i < n; i++) { - noDead = hrtime(); - } - bench.end(n); - } else { - bench.start(); - for (i = 0; i < n; i++) { - noDead = hrtime(noDead); - } - bench.end(n); + switch (type) { + case 'raw': + bench.start(); + for (i = 0; i < n; i++) { + noDead = hrtime(); + } + bench.end(n); + break; + case 'diff': + bench.start(); + for (i = 0; i < n; i++) { + noDead = hrtime(noDead); + } + bench.end(n); + break; + case 'bigint': + bench.start(); + for (i = 0; i < n; i++) { + noDead = hrtime.bigint(); + } + bench.end(n); + break; } - assert.ok(Array.isArray(noDead)); + // eslint-disable-next-line valid-typeof + assert.ok(Array.isArray(noDead) || typeof noDead === 'bigint'); } diff --git a/lib/internal/process/per_thread.js b/lib/internal/process/per_thread.js index fa0334b8bfb2b0..85772aafd8cee9 100644 --- a/lib/internal/process/per_thread.js +++ b/lib/internal/process/per_thread.js @@ -122,8 +122,8 @@ function wrapProcessMethods(binding) { ]; } - // Use a BigUint64Array in the closure because V8 does not have an API for - // creating a BigInt out of a uint64_t yet. + // Use a BigUint64Array in the closure because this is actually a bit + // faster than simply returning a BigInt from C++ in V8 7.1. const hrBigintValues = new BigUint64Array(1); function hrtimeBigInt() { _hrtimeBigInt(hrBigintValues);