Like a linq libraries performance (v4)

Revision 4 of this benchmark created by anon on


Preparation HTML

<script src="https://rawgit.com/jlongster/transducers.js/master/dist/transducers.js"></script>
<script src="https://rawgit.com/nullobject/fkit/master/dist/fkit.js"></script>
<script src="https://cdn.rawgit.com/suckgamony/fromjs/999e2b611d72e28a997b304f18ee844b93759f54/from.src.js"></script>
<script src="https://cdn.rawgit.com/dtao/lazy.js/7a9b0210d97168ff48c5d2b4ce4d12194ba7fbec/lazy.js"></script>
<script src="https://cdn.rawgit.com/CrossEye/ramda/v0.5.0/ramda.js"></script>
<script src="https://cdn.rawgit.com/mihaifm/linq/9c337383e60be3a5560959616bbca51b3eb0d27d/linq.js"></script>
<script src="https://cdn.rawgit.com/lodash/lodash/ad10a1eba55e9530a09827549f56d2886a900b7f/lodash.js"></script>
<script src="https://cdn.rawgit.com/megawac/ramdash/f4fb017325fea763e50933801b39b586548fbe91/ramda.js"></script>
<script src="https://cdn.rawgit.com/Reactive-Extensions/IxJS/es6/dist/ix.js"></script>
<script>var lodash = _.noConflict();</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script>

Setup

var arr = _.range(10000),
        limit = 100;
        
    var odd = function(v) { return !!(v % 2); },
        square = function(v) { return v * v; };

Test runner

Ready to run.

Testing in
TestOps/sec
Native
var r = arr.map(square).filter(odd).slice(0, limit);
ready
Underscore
var r = _(arr).chain().map(square).filter(odd).take(limit).value();
ready
Ix
var r = Ix.Enumerable.from(arr).map(square).filter(odd).take(limit).toArray();
ready
Lazy
var r = Lazy(arr).map(square).filter(odd).take(limit).value();
ready
Lo-Dash
var r = lodash(arr).map(square).filter(odd).take(limit).value();
ready
LinqJS
var r = Enumerable.from(arr).select(square).where(odd).take(limit).toArray();
ready
Rambda
var r = R.take(limit, R.filter(odd, R.map(square, arr)));
ready
from
var r = from(arr).select(square).where(odd).take(limit).toArray();
ready
Ramdash
var r = ramda.take(limit, ramda.filter(odd, ramda.map(square, arr)));
ready
Fkit
var r = F.take(limit, F.filter(odd, F.map(square, arr)));
ready
Transducers
var transform = transducers.compose(
  transducers.map(square),
  transducers.filter(odd),
  transducers.take(limit)
);

var r = transducers.seq(arr, transform);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 1: published by Denis on
  • Revision 4: published by anon on
  • Revision 7: published by Scott Sauyet on
  • Revision 8: published by Scott Sauyet on
  • Revision 12: published by nin-jin on
  • Revision 13: published on
  • Revision 15: published by Denis Stoyanov on