Skip to content

Commit 44f0f94

Browse files
AndrasFishrock123
authored andcommitted
benchmark: add setImmediate() benchmarks
Timings for sequential and concurren setImmediate() with and without arguments, and set + clearImmediate(). PR-URL: #6436 Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
1 parent efb7a90 commit 44f0f94

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

benchmark/timers/immediate.js

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
'use strict';
2+
var common = require('../common.js');
3+
4+
var bench = common.createBenchmark(main, {
5+
thousands: [2000],
6+
type: ['depth', 'depth1', 'breadth', 'breadth1', 'breadth4', 'clear']
7+
});
8+
9+
function main(conf) {
10+
var N = +conf.thousands * 1e3;
11+
switch (conf.type) {
12+
case 'depth':
13+
depth(N);
14+
break;
15+
case 'depth1':
16+
depth1(N);
17+
break;
18+
case 'breadth':
19+
breadth(N);
20+
break;
21+
case 'breadth1':
22+
breadth1(N);
23+
break;
24+
case 'breadth4':
25+
breadth4(N);
26+
break;
27+
case 'clear':
28+
clear(N);
29+
break;
30+
}
31+
}
32+
33+
// setImmediate tail recursion, 0 arguments
34+
function depth(N) {
35+
var n = 0;
36+
bench.start();
37+
setImmediate(cb);
38+
function cb() {
39+
n++;
40+
if (n === N)
41+
bench.end(N / 1e3);
42+
else
43+
setImmediate(cb);
44+
}
45+
}
46+
47+
// setImmediate tail recursion, 1 argument
48+
function depth1(N) {
49+
var n = 0;
50+
bench.start();
51+
setImmediate(cb, 1);
52+
function cb(a1) {
53+
n++;
54+
if (n === N)
55+
bench.end(N / 1e3);
56+
else
57+
setImmediate(cb, 1);
58+
}
59+
}
60+
61+
// concurrent setImmediate, 0 arguments
62+
function breadth(N) {
63+
var n = 0;
64+
bench.start();
65+
function cb() {
66+
n++;
67+
if (n === N)
68+
bench.end(N / 1e3);
69+
}
70+
for (var i = 0; i < N; i++) {
71+
setImmediate(cb);
72+
}
73+
}
74+
75+
// concurrent setImmediate, 1 argument
76+
function breadth1(N) {
77+
var n = 0;
78+
bench.start();
79+
function cb(a1) {
80+
n++;
81+
if (n === N)
82+
bench.end(N / 1e3);
83+
}
84+
for (var i = 0; i < N; i++) {
85+
setImmediate(cb, 1);
86+
}
87+
}
88+
89+
// concurrent setImmediate, 4 arguments
90+
function breadth4(N) {
91+
var n = 0;
92+
bench.start();
93+
function cb(a1, a2, a3, a4) {
94+
n++;
95+
if (n === N)
96+
bench.end(N / 1e3);
97+
}
98+
for (var i = 0; i < N; i++) {
99+
setImmediate(cb, 1, 2, 3, 4);
100+
}
101+
}
102+
103+
function clear(N) {
104+
bench.start();
105+
function cb(a1) {
106+
if (a1 === 2)
107+
bench.end(N / 1e3);
108+
}
109+
for (var i = 0; i < N; i++) {
110+
clearImmediate(setImmediate(cb, 1));
111+
}
112+
setImmediate(cb, 2);
113+
}

0 commit comments

Comments
 (0)