diff options
-rw-r--r-- | benchmark/process_loop.js | 16 | ||||
-rw-r--r-- | benchmark/run.js | 29 | ||||
-rw-r--r-- | benchmark/static_http_server.js | 39 | ||||
-rw-r--r-- | benchmark/timers.js | 5 | ||||
-rwxr-xr-x | configure | 8 |
5 files changed, 96 insertions, 1 deletions
diff --git a/benchmark/process_loop.js b/benchmark/process_loop.js new file mode 100644 index 0000000000..eb2df746b8 --- /dev/null +++ b/benchmark/process_loop.js @@ -0,0 +1,16 @@ +function next (i) { + if (i <= 0) return; + + var process = node.createProcess("echo hello"); + + process.addListener("output", function (chunk) { + if (chunk) print(chunk); + }); + + process.addListener("exit", function (code) { + if (code != 0) node.exit(-1); + next(i - 1); + }); +} + +next(500); diff --git a/benchmark/run.js b/benchmark/run.js new file mode 100644 index 0000000000..4bb2f5c4db --- /dev/null +++ b/benchmark/run.js @@ -0,0 +1,29 @@ +var benchmarks = [ "static_http_server.js" + , "timers.js" + , "process_loop.js" + ]; + +var benchmark_dir = node.path.dirname(__filename); + +function exec (script, callback) { + var command = ARGV[0] + " " + node.path.join(benchmark_dir, script); + var start = new Date(); + var process = node.createProcess(command); + process.addListener("exit", function (code) { + var elapsed = new Date() - start; + callback(elapsed, code); + }); +} + +function runNext (i) { + if (i >= benchmarks.length) return; + print(benchmarks[i] + ": "); + exec(benchmarks[i], function (elapsed, code) { + if (code != 0) { + puts("ERROR "); + } + puts(elapsed); + runNext(i+1); + }); +}; +runNext(0); diff --git a/benchmark/static_http_server.js b/benchmark/static_http_server.js new file mode 100644 index 0000000000..498f751f62 --- /dev/null +++ b/benchmark/static_http_server.js @@ -0,0 +1,39 @@ +var concurrency = 30; +var nrequests = 700; +var port = 8000; +var completed_requests = 0; +var bytes = 1024*5; + +var body = ""; +for (var i = 0; i < bytes; i++) { + body += "C"; +} + +var server = node.http.createServer(function (req, res) { + res.sendHeader(200, [ + ["Content-Type", "text/plain"], + ["Content-Length", body.length] + ]); + res.sendBody(body); + res.finish(); +}) +server.listen(port); + +function responseListener (res) { + res.addListener("complete", function () { + //puts("response " + completed_requests + " from client " + res.client.id); + if (completed_requests++ < nrequests) { + res.client.get("/").finish(responseListener); + } else { + server.close(); + } + }); +} + +function onLoad () { + for (var i = 0; i < concurrency; i++) { + var client = node.http.createClient(port); + client.id = i; + client.get("/").finish(responseListener); + } +} diff --git a/benchmark/timers.js b/benchmark/timers.js new file mode 100644 index 0000000000..095cca119b --- /dev/null +++ b/benchmark/timers.js @@ -0,0 +1,5 @@ +function next (i) { + if (i <= 0) return; + setTimeout(function () { next(i-1); }, 1); +} +next(700); @@ -100,6 +100,12 @@ test: all test-all: all python tools/test.py --mode=debug,release +test-debug: all + python tools/test.py --mode=release,debug + +benchmark: all + build/default/node benchmark/run.js + website: website/api.html website/index.html website/api.html: website/api.txt @@ -123,7 +129,7 @@ check: dist: @$WAF dist -.PHONY: clean dist distclean check uninstall install all test test-all website website-upload +.PHONY: benchmark clean dist distclean check uninstall install all test test-all website website-upload EOF } |