mirror of https://github.com/lukechilds/node.git
Browse Source
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.v0.7.4-release
Ryan
16 years ago
5 changed files with 96 additions and 1 deletions
@ -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); |
@ -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); |
@ -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); |
||||
|
} |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
function next (i) { |
||||
|
if (i <= 0) return; |
||||
|
setTimeout(function () { next(i-1); }, 1); |
||||
|
} |
||||
|
next(700); |
Loading…
Reference in new issue