diff --git a/benchmark/util/inspect.js b/benchmark/util/inspect.js index 913850690c..35253ac966 100644 --- a/benchmark/util/inspect.js +++ b/benchmark/util/inspect.js @@ -22,7 +22,8 @@ const bench = common.createBenchmark(main, { 'Error', 'Array', 'TypedArray', - 'TypedArray_extra' + 'TypedArray_extra', + 'Number' ], option: Object.keys(opts) }); @@ -92,6 +93,9 @@ function main({ method, n, option }) { obj[Symbol('baz')] = 5; benchmark(n, obj, options); break; + case 'Number': + benchmark(n, 0, options); + break; default: throw new Error(`Unsupported method "${method}"`); } diff --git a/lib/util.js b/lib/util.js index 365a15fc9c..2574c2dd66 100644 --- a/lib/util.js +++ b/lib/util.js @@ -615,8 +615,10 @@ function formatValue(ctx, value, recurseTimes, ln) { } function formatNumber(fn, value) { - // Format -0 as '-0'. Strict equality won't distinguish 0 from -0. - if (Object.is(value, -0)) + // Format -0 as '-0'. A `value === -0` check won't distinguish 0 from -0. + // Using a division check is currently faster than `Object.is(value, -0)` + // as of V8 6.1. + if (1 / value === -Infinity) return fn('-0', 'number'); return fn(`${value}`, 'number'); }