1'use strict';
2
3const common = require('../common.js');
4
5const bench = common.createBenchmark(main, {
6  encoding: ['utf-8', 'latin1', 'iso-8859-3'],
7  ignoreBOM: [0, 1],
8  fatal: [0, 1],
9  len: [256, 1024 * 16, 1024 * 512],
10  n: [1e2],
11  type: ['SharedArrayBuffer', 'ArrayBuffer', 'Buffer'],
12});
13
14function main({ encoding, len, n, ignoreBOM, type, fatal }) {
15  const decoder = new TextDecoder(encoding, { ignoreBOM, fatal });
16  let buf;
17
18  switch (type) {
19    case 'SharedArrayBuffer': {
20      buf = new SharedArrayBuffer(len);
21      break;
22    }
23    case 'ArrayBuffer': {
24      buf = new ArrayBuffer(len);
25      break;
26    }
27    case 'Buffer': {
28      buf = Buffer.allocUnsafe(len);
29      break;
30    }
31  }
32
33  bench.start();
34  for (let i = 0; i < n; i++) {
35    try {
36      decoder.decode(buf);
37    } catch {
38      // eslint-disable no-empty
39    }
40  }
41  bench.end(n);
42}
43