Skip to content

Instantly share code, notes, and snippets.

@tdreyno
Created October 13, 2014 17:18
Show Gist options
  • Save tdreyno/1aa43bad31009a5039dd to your computer and use it in GitHub Desktop.
Save tdreyno/1aa43bad31009a5039dd to your computer and use it in GitHub Desktop.
var Immutable = require("immutable"),
t = require("transducers-js"),
comp = t.comp,
map = t.map,
filter = t.filter,
transduce = t.transduce;
var inc = function(n) { return n + 1; };
var isEven = function(n) { return n % 2 == 0; };
var sum = function(a,b) { return a+b; };
// faster with transducers
var xf = comp(map(inc),filter(isEven));
var largeVector = Immutable.Vector();
var largeArray = [];
for(var i = 0; i < 10000000; i++) {
largeVector = largeVector.push(i);
largeArray.push(i);
}
console.time('Native');
largeArray.map(inc).filter(isEven).reduce(sum);
console.timeEnd('Native');
console.time('Transduce');
transduce(xf, sum, 0, largeArray);
console.timeEnd('Transduce');
console.time('Immutable');
largeVector.map(inc).filter(isEven).reduce(sum);
console.timeEnd('Immutable');
console.time('Immutable + Transduce');
transduce(xf, sum, 0, largeVector);
console.timeEnd('Immutable + Transduce');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment