1'use strict';
2
3const common = require('../common.js');
4const bench = common.createBenchmark(main, {
5  encoding: [
6    '', 'utf8', 'ascii', 'hex', 'utf16le', 'latin1',
7  ],
8  args: [ '', 'offset', 'offset+length' ],
9  len: [2048],
10  n: [1e6],
11});
12
13function main({ len, n, encoding, args }) {
14  let string;
15  let start = 0;
16  const buf = Buffer.allocUnsafe(len);
17
18  switch (args) {
19    case 'offset':
20      string = 'a'.repeat(Math.floor(len / 2));
21      start = len - string.length;
22      if (encoding) {
23        bench.start();
24        for (let i = 0; i < n; ++i) {
25          buf.write(string, start, encoding);
26        }
27        bench.end(n);
28      } else {
29        bench.start();
30        for (let i = 0; i < n; ++i) {
31          buf.write(string, start);
32        }
33        bench.end(n);
34      }
35      break;
36    case 'offset+length':
37      string = 'a'.repeat(len);
38      if (encoding) {
39        bench.start();
40        for (let i = 0; i < n; ++i) {
41          buf.write(string, 0, buf.length, encoding);
42        }
43        bench.end(n);
44      } else {
45        bench.start();
46        for (let i = 0; i < n; ++i) {
47          buf.write(string, 0, buf.length);
48        }
49        bench.end(n);
50      }
51      break;
52    default:
53      string = 'a'.repeat(len);
54      if (encoding) {
55        bench.start();
56        for (let i = 0; i < n; ++i) {
57          buf.write(string, encoding);
58        }
59        bench.end(n);
60      } else {
61        bench.start();
62        for (let i = 0; i < n; ++i) {
63          buf.write(string);
64        }
65        bench.end(n);
66      }
67  }
68}
69