1'use strict';
2
3const common = require('../common.js');
4
5const bench = common.createBenchmark(main, {
6  encoding: ['', 'utf8', 'ascii', 'latin1', 'hex', 'UCS-2'],
7  args: [0, 1, 3],
8  len: [1, 64, 1024],
9  n: [1e6],
10}, {
11  combinationFilter: (p) => {
12    return (p.args === 0 && p.encoding === '') ||
13           (p.args !== 0 && p.encoding !== '');
14  },
15});
16
17function main({ encoding, args, len, n }) {
18  const buf = Buffer.alloc(len, 42);
19
20  if (encoding.length === 0)
21    encoding = undefined;
22
23  switch (args) {
24    case 1:
25      bench.start();
26      for (let i = 0; i < n; i += 1)
27        buf.toString(encoding);
28      bench.end(n);
29      break;
30    case 2:
31      bench.start();
32      for (let i = 0; i < n; i += 1)
33        buf.toString(encoding, 0);
34      bench.end(n);
35      break;
36    case 3:
37      bench.start();
38      for (let i = 0; i < n; i += 1)
39        buf.toString(encoding, 0, len);
40      bench.end(n);
41      break;
42    default:
43      bench.start();
44      for (let i = 0; i < n; i += 1)
45        buf.toString();
46      bench.end(n);
47      break;
48  }
49}
50