Like a linq libraries performance (v8)

Revision 8 of this benchmark created by Scott Sauyet on


Description

Moves the function definitions out of the running tests.

(Also removing wu, which seems to be breaking.)

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://google.github.io/traceur-compiler/bin/traceur-runtime.js"></script>
<script src="//cdn.rawgit.com/suckgamony/fromjs/999e2b611d72e28a997b304f18ee844b93759f54/from.src.js"></script>
<script src="//cdn.rawgit.com/dtao/lazy.js/7a9b0210d97168ff48c5d2b4ce4d12194ba7fbec/lazy.js"></script>
<script src="//cdn.rawgit.com/CrossEye/ramda/v0.5.0/ramda.js"></script>
<script src="//cdn.rawgit.com/mihaifm/linq/9c337383e60be3a5560959616bbca51b3eb0d27d/linq.js"></script>
<script src="//cdn.rawgit.com/lodash/lodash/ad10a1eba55e9530a09827549f56d2886a900b7f/lodash.js"></script>
<script src="//cdn.rawgit.com/megawac/ramdash/f4fb017325fea763e50933801b39b586548fbe91/ramda.js"></script>
<script src="//cdn.rawgit.com/Reactive-Extensions/IxJS/es6/dist/ix.js"></script>
<script>var lodash = _.noConflict();</script>
<script src="//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; };
    
    var r_native = function(arr) {
        return arr.map(square).filter(odd).slice(0, limit);
    };
    
    var r_underscore = function(arr) {
        return _(arr).chain().map(square).filter(odd).take(limit).value();
    };
    
    var r_Ix = function(arr) {
        return Ix.Enumerable.from(arr).map(square).filter(odd).take(limit).toArray();
    };
    
    var r_Lazy = function(arr) {
        return Lazy(arr).map(square).filter(odd).take(limit).toArray();
    };
    
    var r_lodash = function(arr) {
        return lodash(arr).map(square).filter(odd).take(limit).value();
    };
    
    var r_LinqJS = function(arr) { 
        return Enumerable.from(arr).select(square).where(odd).take(limit).toArray();
    };
    
    var r_Ramda =  R.compose(R.take(limit), R.filter(odd), R.map(square));
    
    var r_from = function(arr) {
        return from(arr).select(square).where(odd).take(limit).toArray();
    };
    
    var r_Ramdash = ramda.compose(ramda.take(limit), ramda.filter(odd), ramda.map(square));
    
    var r_wu = function(arr) {
        return wu(arr).map(square).filter(odd).take(limit);
    };
    
    var r_FKit = F.compose(F.take(limit), F.filter(odd), F.map(square));
    
    var transform = transducers.compose(
      transducers.map(square),
      transducers.filter(odd),
      transducers.take(limit)
    );
    
    var r_Transducers = function(arr) {
        return transducers.seq(arr, transform);
    };

Test runner

Ready to run.

Testing in
TestOps/sec
Native
r_native(arr);
ready
Underscore
r_underscore(arr);
ready
Ix
r_Ix(arr);
ready
Lazy
r_Lazy(arr);
ready
Lo-Dash
r_lodash(arr);
ready
LinqJS
r_LinqJS(arr);
ready
Ramda
r_Ramda(arr);
ready
from
r_from(arr);
ready
Ramdash
r_Ramdash(arr);
 
ready
Fkit
r_FKit(arr);
ready
Transducers
r_Transducers(arr);
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