Skip to content

Instantly share code, notes, and snippets.

@billywhizz
Created April 12, 2012 12:40
Show Gist options
  • Save billywhizz/2366955 to your computer and use it in GitHub Desktop.
Save billywhizz/2366955 to your computer and use it in GitHub Desktop.
response to bruno's streamline benchmark
"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));
});
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment