Skip to content

Instantly share code, notes, and snippets.

@calebmer
Last active October 19, 2015 00:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save calebmer/1114fadc3fc784f589db to your computer and use it in GitHub Desktop.
Save calebmer/1114fadc3fc784f589db to your computer and use it in GitHub Desktop.
pillarjs/router benchmarks
'use strict'
var http = require('http')
var request = require('supertest')
var Router = require('router')
var finalhandler = require('finalhandler')
var N = parseInt(process.env.N, 10)
var router = Router()
router.use(function (req, res, next) {
console.time('request')
next()
})
for (let i = 0; i < N; i++) {
router.use(function (req, res, next) {
next()
})
}
router.use(function (req, res) {
console.timeEnd('request')
res.end('done')
})
var server = http.createServer(function (req, res) {
router(req, res, finalhandler(req, res))
})
request(server)
.get('/')
.expect('done')
.end(function (error) {
if (error) { throw error }
})
#!/bin/bash
benchmark() {
echo "$1 middleware:"
N=$1 node router-benchmark.js
N=$1 node router-benchmark.js
N=$1 node router-benchmark.js
N=$1 node router-benchmark.js
N=$1 node router-benchmark.js
echo
}
benchmark 10
benchmark 800
benchmark 1000
benchmark 1200
benchmark 1500
@calebmer
Copy link
Author

Results as discussed in pillarjs/router#26

$ npm install router@1.1.3
$ ./router-benchmark.sh
10 middleware:
request: 1ms
request: 1ms
request: 1ms
request: 1ms
request: 1ms

800 middleware:
request: 4ms
request: 3ms
request: 2ms
request: 3ms
request: 3ms

1000 middleware:
request: 5ms
request: 6ms
request: 6ms
request: 6ms
request: 6ms

1200 middleware:
request: 5ms
request: 6ms
request: 4ms
request: 5ms
request: 5ms

1500 middleware:
request: 3ms
request: 3ms
request: 4ms
request: 4ms
request: 4ms

$ npm install calebmer/router#many-next
$ ./router-benchmark
10 middleware:
request: 1ms
request: 0ms
request: 1ms
request: 1ms
request: 1ms

800 middleware:
request: 3ms
request: 4ms
request: 4ms
request: 3ms
request: 3ms

1000 middleware:
request: 5ms
request: 6ms
request: 5ms
request: 5ms
request: 6ms

1200 middleware:
request: 5ms
request: 6ms
request: 7ms
request: 6ms
request: 7ms

1500 middleware:
stack size exceeded
request: 5ms
request: 4ms
request: 4ms
stack size exceeded

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment