iterators (v4)

Revision 4 of this benchmark created by Nicholas McCready on


Preparation HTML

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js">
</script>

<script src="https://cdn.rawgit.com/lodash/lodash/2.4.1/dist/lodash.js">
</script>

<script>
  var miArray = new Array(10000);
  var doSomething =  function(someVal){};

  var deps = {};
  window.exports = function(){
  };
  window.module = window.exports;

var lHlp = {
isDefined: function(value) {
        return angular.isDefined(value) && value !== null;
 },
isFunction: angular.isFunction
};
var _hasErrors = function(collection, cb, ignoreCollection, cbName){
    if(!ignoreCollection) {
      if (!lHlp.isDefined(collection) || !lHlp.isDefined(cb)) {
        $log.error(errorHeader + 'collection or cb undefined');
        return true;
      }
    }
    if(!lHlp.isFunction(cb)){
      cbName = lHlp.defaultTo(cb,'cb');
      $log.error(errorHeader + cbName + ' is not a function');
      return true;
    }
    return false;
  };

  var _iterate = function(collection, externalCb, internalCb){
    if(_hasErrors(undefined, internalCb, true, 'internalCb')){
      return;
    }
    if(!_hasErrors(collection, externalCb)){
      for(var key in collection){
        internalCb(collection[key], key);
      }
    }
  };

  var _each = function(collection, cb){
    _iterate(collection, cb, function(val, key){
      cb(val, key);
    });
  };

</script>

<script src="http://cdn.rawgit.com/lodash/lodash/3.10.1/lodash.js">
</script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser-polyfill.js"></script>
  <script src="https://rawgit.com/jonrimmer/wu-babel/master/es5/wu.js"></script>

Test runner

Ready to run.

Testing in
TestOps/sec
wu.js
wu(miArray).forEach(function(value){
  doSomething(value);
});
ready
nativo
var length = miArray.length;
for (var i = 0; i < length; i++) {
  doSomething(miArray[i]);
}
ready
ES5 Array.forEach
miArray.forEach(function(value) {
  doSomething(value);
});
ready
for in
for (prop in miArray) {
  doSomething(miArray[prop]);
}
ready
angular
angular.forEach(miArray, function(value) {
  doSomething(value);
});
ready
lodash 2.4.1
_.each(miArray, function(value) {
  doSomething(value);
});
ready
angular-leaflet-directive _each
_each(miArray, function(value) {
  doSomething(value);
});
ready
lodash 3.10.1
module._.each(miArray, function(value) {
  doSomething(value);
});
ready

Revisions

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

  • Revision 3: published by Nick McCready on
  • Revision 4: published by Nicholas McCready on