summaryrefslogtreecommitdiff
path: root/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js')
-rw-r--r--node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js b/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js
new file mode 100644
index 0000000..5c337df
--- /dev/null
+++ b/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js
@@ -0,0 +1,101 @@
+'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);
+}