'use strict'; const common = require('../common.js'); const assert = require('assert'); const bench = common.createBenchmark(main, { type: ['string', 'object', 'arraybuffer'], n: [1e4], }); function main({ n, type }) { const data = []; switch (type) { case 'string': for (let i = 0; i < n; ++i) { data.push(new Date().toISOString()); } break; case 'object': for (let i = 0; i < n; ++i) { data.push({ ...process.config }); } break; case 'arraybuffer': for (let i = 0; i < n; ++i) { data.push(new ArrayBuffer(10)); } break; default: throw new Error('Unsupported payload type'); } const run = type === 'arraybuffer' ? (i) => { data[i] = structuredClone(data[i], { transfer: [ data[i] ] }); } : (i) => { data[i] = structuredClone(data[i]); }; bench.start(); for (let i = 0; i < n; ++i) { run(i); } bench.end(n); assert.strictEqual(data.length, n); }