4cko
/usr/local/rvm/gems/ruby-3.4.7/bin:/usr/local/rvm/gems/ruby-3.4.7@global/bin:/usr/local/rvm/rubies/ruby-3.4.7/bin:/home/codespace/.vscode-remote/data/User/globalStorage/github.copilot-chat/debugCommand:/home/codespace/.vscode-remote/data/User/globalStorage/github.copilot-chat/copilotCli:/vscode/bin/linux-x64/7e7950df89d055b5a378379db9ee14290772148a/bin/remote-cli:/home/codespace/.local/bin:/home/codespace/.dotnet:/home/codespace/nvm/current/bin:/home/codespace/.php/current/bin:/home/codespace/.python/current/bin:/home/codespace/java/current/bin:/home/codespace/.ruby/current/bin:/home/codespace/.local/bin:/usr/local/python/current/bin:/usr/local/py-utils/bin:/usr/local/jupyter:/usr/local/oryx:/usr/local/go/bin:/go/bin:/usr/local/sdkman/bin:/usr/local/sdkman/candidates/java/current/bin:/usr/local/sdkman/candidates/gradle/current/bin:/usr/local/sdkman/candidates/maven/current/bin:/usr/local/sdkman/candidates/ant/current/bin:/usr/local/rvm/gems/default/bin:/usr/local/rvm/gems/default@global/bin:/usr/local/rvm/rubies/default/bin:/usr/local/share/rbenv/bin:/usr/local/php/current/bin:/opt/conda/bin:/usr/local/nvs:/usr/local/share/nvm/versions/node/v24.14.0/bin:/usr/local/hugo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/share/dotnet:/home/codespace/.dotnet/tools:/usr/local/rvm/bin
a2c64e7 | ; | |
| 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); | |
| } | |