summaryrefslogtreecommitdiff
path: root/benchmark/timers
diff options
context:
space:
mode:
authorAndras <andras@kinvey.com>2016-04-27 19:59:29 -0400
committerJeremiah Senkpiel <fishrock123@rocketmail.com>2016-06-29 11:02:26 +0200
commitfba271b379c9750fd57463b9188e953af8f95005 (patch)
tree90ec2a54a9248bd47ed315a7276bb6eb6b4fe04b /benchmark/timers
parent6f75b6672ca08c2bc3bf5fe14abb1a9648601e28 (diff)
downloadandroid-node-v8-fba271b379c9750fd57463b9188e953af8f95005.tar.gz
android-node-v8-fba271b379c9750fd57463b9188e953af8f95005.tar.bz2
android-node-v8-fba271b379c9750fd57463b9188e953af8f95005.zip
benchmark: add `setImmediate()` benchmarks
Timings for sequential and concurren setImmediate() with and without arguments, and set + clearImmediate(). PR-URL: https://github.com/nodejs/node/pull/6436 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'benchmark/timers')
-rw-r--r--benchmark/timers/immediate.js113
1 files changed, 113 insertions, 0 deletions
diff --git a/benchmark/timers/immediate.js b/benchmark/timers/immediate.js
new file mode 100644
index 0000000000..7d85dc0325
--- /dev/null
+++ b/benchmark/timers/immediate.js
@@ -0,0 +1,113 @@
+'use strict';
+var common = require('../common.js');
+
+var bench = common.createBenchmark(main, {
+ thousands: [2000],
+ type: ['depth', 'depth1', 'breadth', 'breadth1', 'breadth4', 'clear']
+});
+
+function main(conf) {
+ var N = +conf.thousands * 1e3;
+ switch (conf.type) {
+ case 'depth':
+ depth(N);
+ break;
+ case 'depth1':
+ depth1(N);
+ break;
+ case 'breadth':
+ breadth(N);
+ break;
+ case 'breadth1':
+ breadth1(N);
+ break;
+ case 'breadth4':
+ breadth4(N);
+ break;
+ case 'clear':
+ clear(N);
+ break;
+ }
+}
+
+// setImmediate tail recursion, 0 arguments
+function depth(N) {
+ var n = 0;
+ bench.start();
+ setImmediate(cb);
+ function cb() {
+ n++;
+ if (n === N)
+ bench.end(N / 1e3);
+ else
+ setImmediate(cb);
+ }
+}
+
+// setImmediate tail recursion, 1 argument
+function depth1(N) {
+ var n = 0;
+ bench.start();
+ setImmediate(cb, 1);
+ function cb(a1) {
+ n++;
+ if (n === N)
+ bench.end(N / 1e3);
+ else
+ setImmediate(cb, 1);
+ }
+}
+
+// concurrent setImmediate, 0 arguments
+function breadth(N) {
+ var n = 0;
+ bench.start();
+ function cb() {
+ n++;
+ if (n === N)
+ bench.end(N / 1e3);
+ }
+ for (var i = 0; i < N; i++) {
+ setImmediate(cb);
+ }
+}
+
+// concurrent setImmediate, 1 argument
+function breadth1(N) {
+ var n = 0;
+ bench.start();
+ function cb(a1) {
+ n++;
+ if (n === N)
+ bench.end(N / 1e3);
+ }
+ for (var i = 0; i < N; i++) {
+ setImmediate(cb, 1);
+ }
+}
+
+// concurrent setImmediate, 4 arguments
+function breadth4(N) {
+ var n = 0;
+ bench.start();
+ function cb(a1, a2, a3, a4) {
+ n++;
+ if (n === N)
+ bench.end(N / 1e3);
+ }
+ for (var i = 0; i < N; i++) {
+ setImmediate(cb, 1, 2, 3, 4);
+ }
+}
+
+function clear(N) {
+ bench.start();
+ function cb(a1) {
+ if (a1 === 2)
+ bench.end(N / 1e3);
+ }
+ for (var i = 0; i < N; i++) {
+ clearImmediate(setImmediate(cb, 1));
+ }
+ setImmediate(cb, 2);
+}