Like a linq libraries performance (v15)

Revision 15 of this benchmark created by Denis Stoyanov 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/codemix/fast.js/master/dist/fast.js"></script>
<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.jsdelivr.net/ramda/latest/ramda.min.js"></script>
<script src="//cdn.rawgit.com/mihaifm/linq/9c337383e60be3a5560959616bbca51b3eb0d27d/linq.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.min.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>
<script src="http://nin-jin.github.io/func/index2.js"></script>
<script>
var arr = _.range(100000),
    limit = 1000;

var odd = function(v) { return !(v%5) },
    square = function(v) { return v * v; };

var r_native = function(arr) {
    return arr.map(square).filter(odd).slice(0, limit);
};
console.log('native',r_native(arr))

var r_native2 = function(arr) {
    var res = []
    for( var i = 0 ; ( i < arr.length ) && ( res.length < limit ) ; ++i ){
        var item = square( arr[i] )
        if( !odd( item ) ) continue
        res.push( item )
    }
    return res
};
console.log('native2',r_native2(arr))

var r_underscore = function(arr) {
    return _(arr).chain().map(square).filter(odd).take(limit).value();
};
console.log('underscore',r_underscore(arr))

var r_Ix = function(arr) {
    return Ix.Enumerable.from(arr).map(square).filter(odd).take(limit).toArray();
};
console.log('Ix',r_Ix(arr))

var r_Lazy = function(arr) {
    return Lazy(arr).map(square).filter(odd).take(limit).toArray();
};
console.log('Lazy',r_Lazy(arr))

var r_lodash = function(arr) {
    return lodash(arr).map(square).filter(odd).take(limit).value();
};
console.log('lodash',r_lodash(arr))

var r_LinqJS = function(arr) { 
    return Enumerable.from(arr).select(square).where(odd).take(limit).toArray();
};
console.log('LinqJS',r_LinqJS(arr))

var r_Ramda =  R.compose(R.take(limit), R.filter(odd), R.map(square));
console.log('Ramda',r_Ramda(arr))

var r_from = function(arr) {
    return from(arr).select(square).where(odd).take(limit).toArray();
};
console.log('from',r_from(arr))

var r_Ramdash = ramda.compose(ramda.take(limit), ramda.filter(odd), ramda.map(square));
console.log('Ramdash',r_Ramdash(arr))

var r_Fast = function(arr) {
  return fast.map(fast.filter(arr, odd), square).slice(0, limit);
};

var transform = transducers.compose(
  transducers.map(square),
  transducers.filter(odd),
  transducers.take(limit)
);

var r_Transducers = function(arr) {
    return transducers.seq(arr, transform);
};
console.log('transducers',r_Transducers(arr))

var r_jin_func = $jin.func.pipeline([
    $jin.func.iterator() , 
    $jin.func.mapper(square) ,
    $jin.func.filter(odd) ,
    $jin.func.limiter(limit) ,
    $jin.func.collector()
])
console.log('$jin.func',r_jin_func(arr))

var r_FKit = F.compose(F.take(limit), F.filter(odd), F.map(square));
console.log('FKit',r_FKit(arr))

</script>

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
No Dumb Native
r_native2(arr);
ready
$jin.func
r_jin_func(arr)
ready
Fast.js
r_Fast(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