'use strict'; const common = require('../common.js'); const { Buffer } = require('node:buffer'); const assert = require('node:assert'); const bench = common.createBenchmark(main, { n: [1e6], encoding: ['utf8', 'latin1', 'base64'], len: [32, 4096, 1048576], input: ['ascii', 'multibyte', 'invalid'], }); function main({ n, encoding, len, input }) { let buf; if (input === 'ascii') { buf = Buffer.alloc(len, 'a'); } else { buf = Buffer.alloc(len - (len % 3), '€'); if (input === 'invalid') buf = Buffer.concat([buf, Buffer.from([0xE2, 0x82])]); } const expected = buf.toString(encoding).length; bench.start(); for (let i = 0; i < n; ++i) { assert.strictEqual(Buffer.stringLength(buf, encoding), expected); } bench.end(n); }