aboutsummaryrefslogtreecommitdiff
path: root/node_modules/immediate/bench.js
blob: 590ed35064558c5834f5bac6aa3628ce96f58afb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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);