1'use strict';
2const common = require('../common.js');
3const {
4  Duplex,
5  Readable,
6  Transform,
7  Writable,
8} = require('stream');
9
10const bench = common.createBenchmark(main, {
11  n: [50e6],
12  kind: ['duplex', 'readable', 'transform', 'writable'],
13});
14
15function main({ n, kind }) {
16  switch (kind) {
17    case 'duplex':
18      new Duplex({});
19      new Duplex();
20
21      bench.start();
22      for (let i = 0; i < n; ++i)
23        new Duplex();
24      bench.end(n);
25      break;
26    case 'readable':
27      new Readable({});
28      new Readable();
29
30      bench.start();
31      for (let i = 0; i < n; ++i)
32        new Readable();
33      bench.end(n);
34      break;
35    case 'writable':
36      new Writable({});
37      new Writable();
38
39      bench.start();
40      for (let i = 0; i < n; ++i)
41        new Writable();
42      bench.end(n);
43      break;
44    case 'transform':
45      new Transform({});
46      new Transform();
47
48      bench.start();
49      for (let i = 0; i < n; ++i)
50        new Transform();
51      bench.end(n);
52      break;
53    default:
54      throw new Error('Invalid kind');
55  }
56}
57