summaryrefslogtreecommitdiff
path: root/benchmark/net
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2013-03-20 16:53:23 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2013-03-20 17:16:30 +0100
commit3dac421393b3379bc355c2776563da8537348c26 (patch)
tree38c3587fe448d2c0bb10730e40cf05c1596b6fb8 /benchmark/net
parent34e22b8ee742b4529c6982f8631fc07522d8197f (diff)
downloadandroid-node-v8-3dac421393b3379bc355c2776563da8537348c26.tar.gz
android-node-v8-3dac421393b3379bc355c2776563da8537348c26.tar.bz2
android-node-v8-3dac421393b3379bc355c2776563da8537348c26.zip
bench: add dgram send/recv benchmark
Diffstat (limited to 'benchmark/net')
-rw-r--r--benchmark/net/dgram.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/benchmark/net/dgram.js b/benchmark/net/dgram.js
new file mode 100644
index 0000000000..6a0c5501c6
--- /dev/null
+++ b/benchmark/net/dgram.js
@@ -0,0 +1,61 @@
+// test UDP send/recv throughput
+
+var common = require('../common.js');
+var PORT = common.PORT;
+
+// `num` is the number of send requests to queue up each time.
+// Keep it reasonably high (>10) otherwise you're benchmarking the speed of
+// event loop cycles more than anything else.
+var bench = common.createBenchmark(main, {
+ len: [1, 64, 256, 1024],
+ num: [100],
+ type: ['send', 'recv'],
+ dur: [5]
+});
+
+var dur;
+var len;
+var num;
+var type;
+var chunk;
+var encoding;
+
+function main(conf) {
+ dur = +conf.dur;
+ len = +conf.len;
+ num = +conf.num;
+ type = conf.type;
+ chunk = new Buffer(len);
+ server();
+}
+
+var dgram = require('dgram');
+
+function server() {
+ var sent = 0;
+ var received = 0;
+ var socket = dgram.createSocket('udp4');
+
+ function onsend() {
+ if (sent++ % num == 0)
+ for (var i = 0; i < num; i++)
+ socket.send(chunk, 0, chunk.length, PORT, '127.0.0.1', onsend);
+ }
+
+ socket.on('listening', function() {
+ bench.start();
+ onsend();
+
+ setTimeout(function() {
+ var bytes = (type === 'send' ? sent : received) * chunk.length;
+ var gbits = (bytes * 8) / (1024 * 1024 * 1024);
+ bench.end(gbits);
+ }, dur * 1000);
+ });
+
+ socket.on('message', function(buf, rinfo) {
+ received++;
+ });
+
+ socket.bind(PORT);
+}