mirror of https://github.com/lukechilds/node.git
Browse Source
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>v6.x
committed by
Jeremiah Senkpiel
1 changed files with 113 additions and 0 deletions
@ -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); |
|||
} |
Loading…
Reference in new issue