'use strict'; const common = require('../common.js'); const assert = require('assert'); const bench = common.createBenchmark(main, { len: [32, 256, 1024, 1024 * 8], n: [1e6], type: ['one-byte-string', 'two-byte-string', 'ascii'], op: ['encode', 'encodeInto'], }); function main({ n, op, len, type }) { const encoder = new TextEncoder(); let base = ''; switch (type) { case 'ascii': base = 'a'; break; case 'one-byte-string': base = '\xff'; break; case 'two-byte-string': base = 'ğ'; break; } const input = base.repeat(len); if (op === 'encode') { const expected = encoder.encode(input); let result; bench.start(); for (let i = 0; i < n; i++) result = encoder.encode(input); bench.end(n); assert.deepStrictEqual(result, expected); } else { const expected = new Uint8Array(len); const subarray = new Uint8Array(len); const expectedStats = encoder.encodeInto(input, expected); let result; bench.start(); for (let i = 0; i < n; i++) result = encoder.encodeInto(input, subarray); bench.end(n); assert.deepStrictEqual(subarray, expected); assert.deepStrictEqual(result, expectedStats); } }