UNPKG

2.21 kBJavaScriptView Raw
1'use strict';
2
3const buffers = [
4 Buffer.from(
5 (new Array(100)).fill('').map((_, i) => `key${i}=value${i}`).join('&')
6 ),
7];
8const calls = {
9 field: 0,
10 end: 0,
11};
12
13let n = 3e3;
14
15const moduleName = process.argv[2];
16switch (moduleName) {
17 case 'busboy': {
18 const busboy = require('busboy');
19
20 console.time(moduleName);
21 (function next() {
22 const parser = busboy({
23 limits: {
24 fieldSizeLimit: Infinity,
25 },
26 headers: {
27 'content-type': 'application/x-www-form-urlencoded; charset=utf-8',
28 },
29 });
30 parser.on('field', (name, val, info) => {
31 ++calls.field;
32 }).on('close', () => {
33 ++calls.end;
34 if (--n === 0)
35 console.timeEnd(moduleName);
36 else
37 process.nextTick(next);
38 });
39
40 for (const buf of buffers)
41 parser.write(buf);
42 parser.end();
43 })();
44 break;
45 }
46
47 case 'formidable': {
48 const QuerystringParser =
49 require('formidable/src/parsers/Querystring.js');
50
51 console.time(moduleName);
52 (function next() {
53 const parser = new QuerystringParser();
54 parser.on('data', (obj) => {
55 ++calls.field;
56 }).on('end', () => {
57 ++calls.end;
58 if (--n === 0)
59 console.timeEnd(moduleName);
60 else
61 process.nextTick(next);
62 });
63
64 for (const buf of buffers)
65 parser.write(buf);
66 parser.end();
67 })();
68 break;
69 }
70
71 case 'formidable-streaming': {
72 const QuerystringParser =
73 require('formidable/src/parsers/StreamingQuerystring.js');
74
75 console.time(moduleName);
76 (function next() {
77 const parser = new QuerystringParser();
78 parser.on('data', (obj) => {
79 ++calls.field;
80 }).on('end', () => {
81 ++calls.end;
82 if (--n === 0)
83 console.timeEnd(moduleName);
84 else
85 process.nextTick(next);
86 });
87
88 for (const buf of buffers)
89 parser.write(buf);
90 parser.end();
91 })();
92 break;
93 }
94
95 default:
96 if (moduleName === undefined)
97 console.error('Missing parser module name');
98 else
99 console.error(`Invalid parser module name: ${moduleName}`);
100 process.exit(1);
101}