Skip to content

Instantly share code, notes, and snippets.

@polotek
Forked from bjouhier/benchCallbacks.js
Created April 12, 2012 00:24
Show Gist options
  • Save polotek/2363715 to your computer and use it in GitHub Desktop.
Save polotek/2363715 to your computer and use it in GitHub Desktop.
streamline vs. callbacks bench
"use strict";
var fs = require('fs');
var cache = {}, hit = 0, missed = 0;
function load(name, cb) {
var res = cache[name];
if (res) {
process.nextTick(function() {
hit++;
cb(null, res);
});
} else {
fs.readFile(name, function(err, data) {
missed++;
cb(null, cache[name] = data);
});
}
}
var count = 1000000;
function bench(cb) {
var total = 0, done = 0;
for( var i = 0; i < count; i++) {
load(__dirname + '/benchCallbacks.js', function(err, data) {
// removed cause streamline isn't checking errors
// if (err) return cb(err);
total += data.length;
done++;
if(done === count) { return cb(null, total); }
});
}
}
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));
});
"use strict";
var fs = require('fs');
var cache = {}, hit = 0, missed = 0;
function load(name, _) {
var res = cache[name];
if (res) {
hit++;
return res;
} else {
missed++;
return cache[name] = fs.readFile(name, _);
}
}
var count = 1000000;
function bench(_) {
var total = 0;
for (var i = 0; i < count; i++) {
var res = load(__dirname + '/benchCallbacks.js', _);
total += res.length;
}
return total;
}
var t0 = Date.now();
var result = bench(_);
console.log('hit=' + hit + ', missed=' + missed + ', result=' + result);
console.log('elapsed: ' + (Date.now() - t0));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment