diff --git a/benchmark/util/inspect.js b/benchmark/util/inspect.js index 8e453b9e226e..effa64852fe8 100644 --- a/benchmark/util/inspect.js +++ b/benchmark/util/inspect.js @@ -2,6 +2,7 @@ const util = require('util'); const common = require('../common.js'); +const assert = require('node:assert'); const opts = { showHidden: { showHidden: true }, @@ -19,6 +20,8 @@ const bench = common.createBenchmark(main, { 'String_boxed', 'Date', 'Set', + 'Set_large', + 'Map', 'Error', 'Array', 'TypedArray', @@ -29,11 +32,14 @@ const bench = common.createBenchmark(main, { }); function benchmark(n, obj, options) { + let output; bench.start(); for (let i = 0; i < n; i += 1) { - util.inspect(obj, options); + output = util.inspect(obj, options); } bench.end(n); + assert.strictEqual(typeof output, 'string'); + assert.notStrictEqual(output.length, 0); } function main({ method, n, option }) { @@ -77,6 +83,20 @@ function main({ method, n, option }) { obj = new Set([5, 3]); benchmark(n, obj, options); break; + case 'Set_large': + obj = new Set(); + for (let i = 0; i < 50; i++) { + obj.add(i); + } + benchmark(n, obj, options); + break; + case 'Map': + obj = new Map(); + for (let i = 0; i < 50; i++) { + obj.set(i, i); + } + benchmark(n, obj, options); + break; case 'Error': benchmark(n, new Error('error'), options); break; diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index 7ee103196585..70c0c55cb46e 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -2409,11 +2409,11 @@ function formatSet(value, ctx, ignored, recurseTimes) { let i = 0; for (const v of value) { if (i >= maxLength) break; - ArrayPrototypePush(output, formatValue(ctx, v, recurseTimes)); + output[output.length] = formatValue(ctx, v, recurseTimes); i++; } if (remaining > 0) { - ArrayPrototypePush(output, remainingText(remaining)); + output[output.length] = remainingText(remaining); } ctx.indentationLvl -= 2; return output; @@ -2428,14 +2428,12 @@ function formatMap(value, ctx, ignored, recurseTimes) { let i = 0; for (const { 0: k, 1: v } of value) { if (i >= maxLength) break; - ArrayPrototypePush( - output, - `${formatValue(ctx, k, recurseTimes)} => ${formatValue(ctx, v, recurseTimes)}`, - ); + output[output.length] = + `${formatValue(ctx, k, recurseTimes)} => ${formatValue(ctx, v, recurseTimes)}`; i++; } if (remaining > 0) { - ArrayPrototypePush(output, remainingText(remaining)); + output[output.length] = remainingText(remaining); } ctx.indentationLvl -= 2; return output;