aboutsummaryrefslogtreecommitdiff
path: root/node_modules/immediate/bench.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/immediate/bench.js')
-rw-r--r--node_modules/immediate/bench.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/node_modules/immediate/bench.js b/node_modules/immediate/bench.js
new file mode 100644
index 00000000..590ed350
--- /dev/null
+++ b/node_modules/immediate/bench.js
@@ -0,0 +1,89 @@
+var immediate = require('./lib/index');
+
+function bench (num, done) {
+ var i = 1e3;
+ var time = process.hrtime();
+ function next(i) {
+ var total = 50000;
+ var todo = total;
+ function nextInt1() {
+ if (--todo !== 0) {
+ return;
+ }
+ immediate(next, i -1);
+ }
+ function nextInt2() {
+ if (--todo !== 0) {
+ return;
+ }
+ immediate(next, i -1);
+ }
+ function nextInt3() {
+ if (--todo !== 0) {
+ return;
+ }
+ immediate(next, i -1);
+ }
+ function nextInt4() {
+ if (--todo !== 0) {
+ return;
+ }
+ immediate(next, i -1);
+ }
+ function nextInt5() {
+ if (--todo !== 0) {
+ return;
+ }
+ immediate(next, i -1);
+ }
+ if (i > 0) {
+ var j = 0;
+ while (j++ < total) {
+ switch (j % 5) {
+ case 0:
+ immediate(nextInt1);
+ break;
+ case 1:
+ immediate(nextInt2, 'arg');
+ break;
+ case 2:
+ immediate(nextInt3, 'arg', 'another arg');
+ break;
+ case 3:
+ immediate(nextInt4, 'arg', 'another arg', 'third arg');
+ break;
+ case 4:
+ immediate(nextInt5, 'arg', 'another arg', 'third arg', '4th arg');
+ break;
+ }
+ }
+ } else {
+ after();
+ }
+ }
+
+ immediate(next, i);
+ function after() {
+ var diff = process.hrtime(time);
+ var units = 'nanoseconds';
+ var diftime = diff[0] * 1e9 + diff[1];
+ if (diftime > 1e6) {
+ diftime /= 1e6;
+ units = 'milliseconds';
+ }
+ if (diftime > 1000) {
+ diftime /= 1000;
+ units = 'seconds';
+ }
+ console.log(`Benchmark ${num < 10 ? ('0' + num): num} took ${diftime.toFixed(4)} ${units}`);
+ done(num);
+ }
+}
+var runs = 20;
+function afterRun(num) {
+ if (num === runs) {
+ return;
+ }
+ bench(num + 1, afterRun);
+}
+afterRun(0);