Permalink
Browse files

Add 'make bench' script

  • Loading branch information...
1 parent cdde22a commit ff456b38862de3fd0118c6ac6b3f46edb1fbb87f @ry ry committed Oct 13, 2010
Showing with 83 additions and 5 deletions.
  1. +1 −0 .gitignore
  2. +4 −4 Makefile
  3. +1 −1 benchmark/http_simple.js
  4. +77 −0 benchmark/http_simple_bench.sh
View
@@ -14,3 +14,4 @@ tmp/
node
node_g
*.swp
+.benchmark_reports
View
@@ -36,9 +36,6 @@ test-pummel: all
test-internet: all
python tools/test.py internet
-benchmark: all
- build/default/node benchmark/run.js
-
# http://rtomayko.github.com/ronn
# gem install ronn
doc: doc/node.1 doc/api.html doc/index.html doc/changelog.html
@@ -85,4 +82,7 @@ dist: doc/node.1 doc/api.html
rm -rf $(TARNAME)
gzip -f -9 $(TARNAME).tar
-.PHONY: benchmark clean docclean dist distclean check uninstall install all test test-all website-upload
+bench:
+ benchmark/http_simple_bench.sh
+
+.PHONY: bench clean docclean dist distclean check uninstall install all test test-all website-upload
View
@@ -74,7 +74,7 @@ var server = http.createServer(function (req, res) {
body = fixed;
} else if (command == "info") {
- body = 'rev: ' + rev + '\n' + 'uname: ' + uname + '\n';
+ body = 'rev=' + rev + '\nuname="' + uname + '"\n';
} else {
status = 404;
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+SERVER=127.0.0.1
+PORT=8000
+
+# You may want to configure your TCP settings to make many ports available
+# to node and ab. On macintosh use:
+# sudo sysctl -w net.inet.ip.portrange.first=32768
+# sudo sysctl -w net.inet.tcp.msl=1000
+
+if [ ! -d benchmark/ ]; then
+ echo "Run this script from the node root directory"
+ exit 1
+fi
+
+if [ $SERVER == "127.0.0.1" ]; then
+ ./node benchmark/http_simple.js &
+ node_pid=$!
+ sleep 1
+fi
+
+info=`curl -s http://$SERVER:$PORT/info`
+eval $info
+
+date=`date "+%Y%m%d%H%M%S"`
+
+ab_hello_world() {
+ local type="$1"
+ local ressize="$2"
+ if [ $type == "string" ]; then
+ local uri="bytes/$ressize"
+ else
+ local uri="buffer/$ressize"
+ fi
+
+
+ name="ab-hello-world-$type-$ressize"
+
+ dir=".benchmark_reports/$name/$rev/"
+ if [ ! -d $dir ]; then
+ mkdir -p $dir
+ fi
+
+ summary_fn="$dir/$date.summary"
+ data_fn="$dir/$date.data"
+
+ echo "Bench $name starts in 3 seconds..."
+ # let shit calm down
+ sleep 3
+
+ # hammer that as hard as it can for 10 seconds.
+ ab -g $data_fn -c 100 -t 10 http://$SERVER:$PORT/$uri > $summary_fn
+
+ # add our data about the server
+ echo >> $summary_fn
+ echo >> $summary_fn
+ echo "webserver-rev: $rev" >> $summary_fn
+ echo "webserver-uname: $uname" >> $summary_fn
+
+ grep Req $summary_fn
+
+ echo "Summary: $summary_fn"
+ echo
+}
+
+# 1k
+ab_hello_world 'string' '1024'
+ab_hello_world 'buffer' '1024'
+
+# 100k
+ab_hello_world 'string' '102400'
+ab_hello_world 'buffer' '102400'
+
+
+if [ ! -z $node_pid ]; then
+ kill -9 $node_pid
+fi

0 comments on commit ff456b3

Please sign in to comment.