lodash-lazy (v9)

Revision 9 of this benchmark created on


Description

Demoing Lo-Dash (edge) support for lazy evaluation (contributed by @filip_zawada).

Preparation HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore.js"></script>
<script src="//cdn.rawgit.com/lodash/lodash/ad10a1eba55e9530a09827549f56d2886a900b7f/lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.4.1/immutable.min.js"></script>
<script>var lodash = _.noConflict();</script>

Setup

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

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
Lo-Dash
var r = lodash(arr).map(square).filter(odd).take(limit).value();
ready
native brute
var r = [];
for (var i = 0; i < arr.length && r.length < limit; i++) {
  var v = square(arr[i]);
  odd(v) && r.push(v);
}
ready
immutable
var r = seq.map(square).filter(odd).take(limit).toArray()
ready

Revisions

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