Sha256: 2ce1233b826f4954ea3549cdcac16936f802ea7f4d96b4a367d2a6d72df4068e

Contents?: true

Size: 1.91 KB

Versions: 5

Compression:

Stored size: 1.91 KB

Contents

'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);
}

Version data entries

5 entries across 4 versions & 1 rubygems

Version Path
node-compiler-0.9.1 vendor/node/benchmark/timers/immediate.js
node-compiler-0.9.0 vendor/node-v7.2.1/benchmark/timers/immediate.js
node-compiler-0.8.0 vendor/node-v7.2.0/benchmark/timers/immediate.js
node-compiler-0.7.0 vendor/node-v6.9.1/benchmark/timers/immediate.js
node-compiler-0.7.0 vendor/node-v7.1.0/benchmark/timers/immediate.js