billywhizz
4/12/2012 - 12:40 PM

response to bruno's streamline benchmark

response to bruno's streamline benchmark

Intel(R) Core(TM)2 Quad  CPU   Q8200  @ 2.33GHz

node benchCallbacks2.js 1000000

hit=999999, missed=1, result=805000000
elapsed: 106

_node --fibers benchStreamline._js 1000000

hit=999999, missed=1, result=805000000
elapsed: 300

_node benchStreamline._js 1000000

hit=999999, missed=1, result=805000000
elapsed: 1781

node benchCallbacks.js 1000000

hit=999999, missed=1, result=805000000
elapsed: 2933
"use strict";
var fs = require('fs');
var cache = {}, hit = 0, missed = 0;
var count = parseInt(process.argv[2]) || 1000000;
var fname = __dirname + "/benchCallbacks.js";

function bench(cb) {
  var total = 0;
  var current = 0;
  function handleResult(err, data) {
    if(err) return cb(err);
    total += data.length;
    //console.log(current);
    if(++current === count) {
      return cb(null, total);
    }
    if(current % 1000 === 0) {
      process.nextTick(next);
      return;
    }
    next();
  }
  function next() {
    var res = cache[fname];
    if(res) {
      hit++;
      return handleResult(null, res);
    }
    fs.readFile(fname, function(err, data) {
      missed++;
      cache[fname] = data;
      return handleResult(err, data);
    });
  }
  next();
}


var t0 = Date.now();
bench(function(err, result) {
  if (err) throw err;
  console.log('hit=' + hit + ', missed=' + missed + ', result=' + result);
  console.log('elapsed: ' + (Date.now() - t0));
});