From 9a45f7bd3d46c4278561c8bc6f254ce272ac0046 Mon Sep 17 00:00:00 2001 From: TJ Holowaychuk Date: Fri, 20 Dec 2013 19:34:59 -0800 Subject: [PATCH] add new benchmarks (to match koa) --- Makefile | 6 +++--- benchmarks/Makefile | 13 +++++++++++++ benchmarks/middleware.js | 23 +++++++++++++++++++++++ benchmarks/run | 16 ++++++++++++++++ support/bench | 32 -------------------------------- 5 files changed, 55 insertions(+), 35 deletions(-) create mode 100644 benchmarks/Makefile create mode 100644 benchmarks/middleware.js create mode 100755 benchmarks/run delete mode 100755 support/bench diff --git a/Makefile b/Makefile index d0cb2a01..a1f33a70 100644 --- a/Makefile +++ b/Makefile @@ -24,11 +24,11 @@ test-cov: lib-cov lib-cov: @jscoverage lib lib-cov -benchmark: - @./support/bench +bench: + @$(MAKE) -C benchmarks clean: rm -f coverage.html rm -fr lib-cov -.PHONY: test test-unit test-acceptance benchmark clean +.PHONY: test test-unit test-acceptance bench clean diff --git a/benchmarks/Makefile b/benchmarks/Makefile new file mode 100644 index 00000000..baf0d6fc --- /dev/null +++ b/benchmarks/Makefile @@ -0,0 +1,13 @@ + +all: + @./run 1 middleware + @./run 5 middleware + @./run 10 middleware + @./run 15 middleware + @./run 20 middleware + @./run 30 middleware + @./run 50 middleware + @./run 100 middleware + @echo + +.PHONY: all diff --git a/benchmarks/middleware.js b/benchmarks/middleware.js new file mode 100644 index 00000000..3aa7a8b4 --- /dev/null +++ b/benchmarks/middleware.js @@ -0,0 +1,23 @@ + +var http = require('http'); +var express = require('..'); +var app = express(); + +// number of middleware + +var n = parseInt(process.env.MW || '1', 10); +console.log(' %s middleware', n); + +while (n--) { + app.use(function(req, res, next){ + next(); + }); +} + +var body = new Buffer('Hello World'); + +app.use(function(req, res, next){ + res.send(body); +}); + +app.listen(3333); diff --git a/benchmarks/run b/benchmarks/run new file mode 100755 index 00000000..fc84f27f --- /dev/null +++ b/benchmarks/run @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +echo +MW=$1 node --harmony-generators $2 & +pid=$! + +sleep 2 + +wrk 'http://localhost:3333/?foo[bar]=baz' \ + -d 3 \ + -c 50 \ + -t 4 \ + | grep 'Requests/sec' \ + | awk '{ print " " $2 }' + +kill $pid diff --git a/support/bench b/support/bench deleted file mode 100755 index 207c1819..00000000 --- a/support/bench +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash - -NODE_ENV=production node ./support/app & -pid=$! - -bench() { - ab -n 5000 -c 50 -k -q http://127.0.0.1:8000$1 \ - | grep "Requests per" \ - | cut -d ' ' -f 7 \ - | xargs echo "$2:" -} - -bench_conditional() { - ab -n 5000 -c 50 -H "If-None-Match: $3" -k -q http://127.0.0.1:8000$1 \ - | grep "Requests per" \ - | cut -d ' ' -f 7 \ - | xargs echo "$2:" -} - -sleep .5 -bench / "Hello World" -bench /blog "Mounted Hello World" -bench /blog/admin "Mounted 2 Hello World" -bench /middleware "Middleware" -bench /match "Router" -bench /render "Render" -bench /json "JSON tiny" -bench /json/15 "JSON small" -bench /json/50 "JSON medium" -bench /json/150 "JSON large" - -kill -9 $pid \ No newline at end of file