summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorRyan <ry@tinyclouds.org>2009-07-13 12:48:59 +0200
committerRyan <ry@tinyclouds.org>2009-07-13 16:38:55 +0200
commit05d6319fa034b8ef4d26445c59e3049bde3c41fb (patch)
tree6dc6f7445c40aea48af8e0b4575fc1d74e12ea13 /benchmark
parentbf6a457f64d44fbd3cdd273559cad5dafd16676e (diff)
downloadnode-new-05d6319fa034b8ef4d26445c59e3049bde3c41fb.tar.gz
Add benchmark scripts.
To use the benchmarks: node benchmarks/run.js or: make benchmark The numbers reported are the elapsed milliseconds the script took to complete. Currently only benching HTTP code and timers.
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/process_loop.js16
-rw-r--r--benchmark/run.js29
-rw-r--r--benchmark/static_http_server.js39
-rw-r--r--benchmark/timers.js5
4 files changed, 89 insertions, 0 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);