From de3ad6be9cb8ec8b1e8af91ac4fc2a09cef38835 Mon Sep 17 00:00:00 2001 From: Andrey Sidorov Date: Wed, 11 Apr 2012 11:31:06 +1000 Subject: [PATCH] move benchmarks to separate folder --- test/benchmarks/atom_benchmark_buffered.js | 51 +++++++++++++++ test/benchmarks/atom_benchmark_parallel.js | 63 +++++++++++++++++++ .../query_pointer_benchmark_parallel.js | 53 ++++++++++++++++ .../query_pointer_benchmark_sync.js | 48 ++++++++++++++ 4 files changed, 215 insertions(+) create mode 100644 test/benchmarks/atom_benchmark_buffered.js create mode 100644 test/benchmarks/atom_benchmark_parallel.js create mode 100644 test/benchmarks/query_pointer_benchmark_parallel.js create mode 100644 test/benchmarks/query_pointer_benchmark_sync.js diff --git a/test/benchmarks/atom_benchmark_buffered.js b/test/benchmarks/atom_benchmark_buffered.js new file mode 100644 index 0000000..7b97c86 --- /dev/null +++ b/test/benchmarks/atom_benchmark_buffered.js @@ -0,0 +1,51 @@ +// WinServ2008R2 64bit, Intel(R) Core(TM) i7 CPU 870 @2.93GHz, Xming 6.9.0.31 +// 0.4.3/cygwin 32bit: 12000 +/-1000 InternAtom/sec +// 0.5.1/win32 : 12000 +/-1000 + +// Ubuntu 11.04 32bit, Intel(R) Core(TM)2 Duo CPU T7250 @2.00GHz, XOrg 1:7.6+4ubuntu3.1 +// 0.4.9pre: 23300 +/-200 + + +var x11 = require('../lib/x11'); + +var xclient = x11.createClient(); +var counter = 0; +var t = +new Date(); +var t0 = t; +var num = 100000; +xclient.on('connect', function(display) { + console.log(display); + process.exit(0); + var X = this; + for (var i=0; i < num; ++i) + { + var hello = 'Hello, node.js ' + i; + X.InternAtom(false, hello, function(atomId) { + if (counter == 0) + { + var t1 = +new Date(); + console.log('first reply after sending %d atoms in %d ms', num, t1-t); + t = t1; + } + //console.log('atom %d saved on server', atomId); + + if ((counter % 10000) == 0) + { + var t1 = +new Date(); + console.log('received 10000 (up to %d) atom ids in %d ms', counter, t1 - t); + t = t1; + } + + counter++; + if (counter == (num-1)) + { + var t1 = +new Date(); + var delta = t1 - t0; + console.log(delta); + console.log('reqs/msec: ' + num/delta); + console.log('msec per req: ' + delta/num); + process.exit(0); // TODO: X.end() ? + } + }); + } +}); diff --git a/test/benchmarks/atom_benchmark_parallel.js b/test/benchmarks/atom_benchmark_parallel.js new file mode 100644 index 0000000..afde735 --- /dev/null +++ b/test/benchmarks/atom_benchmark_parallel.js @@ -0,0 +1,63 @@ +// test results: + +// WinServ2008R2, Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz + Xming 6.9.0.31 +// +// 0.4.3/cygwin 32bit : 8500 +/- 2000 InternAtom/sec +// 0.5.1/win32 : N/A +// +// Ubuntu 11.04 32bit, Intel(R) Core(TM)2 Duo CPU T7250 @2.00GHz, XOrg 1:7.6+4ubuntu3.1 +// 0.4.9pre: 16700 +/-300 + + +var x11 = require('../lib/x11'); + +var xclient = x11.createClient(); +var reqcounter = 0; +var rescounter = 0; + +var num = 400000; +var X; + +var t0 = +new Date(); + +function benchmarkAtoms() +{ + if (reqcounter > num) + return; + + X.InternAtom(false, 'test ' + reqcounter, function(atomId) { + rescounter++; + //console.log('%d received', rescounter); + if ( (rescounter % 10000) == 0) + { + var t2 = X.t1; + X.t1 = +new Date(); + var delta = X.t1 - t2; + console.log(reqcounter - rescounter); + console.log('reqs/msec: ' + 10000/delta); + console.log('msec per req: ' + delta/10000); + } + if (rescounter == (num-2)) + { + var t1 = +new Date(); + var delta = t1 - t0; + console.log(delta); + console.log('reqs/msec: ' + num/delta); + console.log('msec per req: ' + delta/num); + + process.exit(0); + } + }); + + reqcounter++; + //console.log('%d sent', reqcounter); + process.nextTick(benchmarkAtoms); +} + + + +xclient.on('connect', function(display) { + X = this; + X.t1 = +new Date(); + benchmarkAtoms(); +}); diff --git a/test/benchmarks/query_pointer_benchmark_parallel.js b/test/benchmarks/query_pointer_benchmark_parallel.js new file mode 100644 index 0000000..5bada4d --- /dev/null +++ b/test/benchmarks/query_pointer_benchmark_parallel.js @@ -0,0 +1,53 @@ +// test results: + +// WinServ2008R2, Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz + Xming 6.9.0.31 +// +// 0.4.3/cygwin 32bit : 6900 +/- 200 req/sec +// 0.5.1/win32 : 3700 +/- 200 req/sec +// cygwin x11perf -sync -pointer : 2800 +/- 200 req/sec +// cygwin x11perf -pointer : 5600 +/- 200 req/sec + +// +// Ubuntu 11.04 32bit, Intel(R) Core(TM)2 Duo CPU T7250 @2.00GHz, XOrg 1:7.6+4ubuntu3.1 +// 0.4.9pre : +// x11perf -sync -pointer : +// x11perf -pointer : + +var x11 = require('../lib/x11'); +var X = x11.createClient(); + +var total = 50000; +var num_qp_resp_left = total; +var num_qp_req_left = total; +var start = +new Date(); +var wid; + +function benchmarkQP() +{ + num_qp_req_left--; + X.QueryPointer(wid, function(res) { + num_qp_resp_left--; + if (num_qp_resp_left == 0) + { + var end = +new Date(); + var delta = (end - start)/1000 + console.error( 'Finished ' + total + ' requests in ' + delta + ' sec, ' + total/delta + ' req/sec'); + X.terminate(); + } + }); + + if (num_qp_req_left > 0) + process.nextTick(benchmarkQP); +} + +X.on('connect', function(display) { + var screen = display.screen[0]; + wid = X.AllocID(); + X.CreateWindow(wid, screen.root, 10, 10, 400, 300, 1, 1, 0, { backgroundPixel: screen.white_pixel }); + X.MapWindow(wid); + benchmarkQP(wid); +}); + +X.on('error', function(err) { + console.log(err); +}); diff --git a/test/benchmarks/query_pointer_benchmark_sync.js b/test/benchmarks/query_pointer_benchmark_sync.js new file mode 100644 index 0000000..3e786fa --- /dev/null +++ b/test/benchmarks/query_pointer_benchmark_sync.js @@ -0,0 +1,48 @@ +// test results: + +// WinServ2008R2, Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz + Xming 6.9.0.31 +// +// 0.4.3/cygwin 32bit : 2900 +/- 300 req/sec +// 0.5.1/win32 : 5500 +/- 1000 req/sec +// cygwin x11perf -sync -pointer : 2800 +/- 200 req/sec +// cygwin x11perf -pointer : 5600 +/- 200 req/sec + +// +// Ubuntu 11.04 32bit, Intel(R) Core(TM)2 Duo CPU T7250 @2.00GHz, XOrg 1:7.6+4ubuntu3.1 +// 0.4.9pre : +// x11perf -sync -pointer : +// x11perf -pointer : + +var x11 = require('../lib/x11'); +var X = x11.createClient(); + +var total = 50000; +var num_qp_left = total; +var start = +new Date(); + +function benchmarkQP(wid) +{ + X.QueryPointer(wid, function(res) { + num_qp_left--; + if (num_qp_left > 0) + benchmarkQP(wid); + else { + var end = +new Date(); + var delta = (end - start)/1000 + console.log( 'Finished ' + total + ' requests in ' + delta + ' sec, ' + total/delta + ' req/sec'); + X.terminate(); + } + }); +} + +X.on('connect', function(display) { + var screen = display.screen[0]; + var wid = X.AllocID(); + X.CreateWindow(wid, screen.root, 10, 10, 400, 300, 1, 1, 0, { backgroundPixel: screen.white_pixel }); + X.MapWindow(wid); + benchmarkQP(wid); +}); + +X.on('error', function(err) { + console.log(err); +});