123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 'use strict';
- const buffers = [
- Buffer.from(
- (new Array(100)).fill('').map((_, i) => `key${i}=value${i}`).join('&')
- ),
- ];
- const calls = {
- field: 0,
- end: 0,
- };
- let n = 3e3;
- const moduleName = process.argv[2];
- switch (moduleName) {
- case 'busboy': {
- const busboy = require('busboy');
- console.time(moduleName);
- (function next() {
- const parser = busboy({
- limits: {
- fieldSizeLimit: Infinity,
- },
- headers: {
- 'content-type': 'application/x-www-form-urlencoded; charset=utf-8',
- },
- });
- parser.on('field', (name, val, info) => {
- ++calls.field;
- }).on('close', () => {
- ++calls.end;
- if (--n === 0)
- console.timeEnd(moduleName);
- else
- process.nextTick(next);
- });
- for (const buf of buffers)
- parser.write(buf);
- parser.end();
- })();
- break;
- }
- case 'formidable': {
- const QuerystringParser =
- require('formidable/src/parsers/Querystring.js');
- console.time(moduleName);
- (function next() {
- const parser = new QuerystringParser();
- parser.on('data', (obj) => {
- ++calls.field;
- }).on('end', () => {
- ++calls.end;
- if (--n === 0)
- console.timeEnd(moduleName);
- else
- process.nextTick(next);
- });
- for (const buf of buffers)
- parser.write(buf);
- parser.end();
- })();
- break;
- }
- case 'formidable-streaming': {
- const QuerystringParser =
- require('formidable/src/parsers/StreamingQuerystring.js');
- console.time(moduleName);
- (function next() {
- const parser = new QuerystringParser();
- parser.on('data', (obj) => {
- ++calls.field;
- }).on('end', () => {
- ++calls.end;
- if (--n === 0)
- console.timeEnd(moduleName);
- else
- process.nextTick(next);
- });
- for (const buf of buffers)
- parser.write(buf);
- parser.end();
- })();
- break;
- }
- default:
- if (moduleName === undefined)
- console.error('Missing parser module name');
- else
- console.error(`Invalid parser module name: ${moduleName}`);
- process.exit(1);
- }
|