Nimble vs lodash vs jQuery

Benchmark created by Mark Johnson on


Preparation HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.2.1/lodash.min.js"></script>

<script>
lodash = window.lodash = _.noConflict();
</script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="http://caolan.github.io/nimble/nimble.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/async/0.2.7/async.min.js"></script>
<script src="http://jphpsf.github.io/setImmediate-shim-demo/setImmediate.js"></script>
<script>
var pi = Math.PI,
a = "t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t".split(","), e;
</script>

Setup

var callback = function() {
      deferred.resolve();
    };

Test runner

Ready to run.

Testing in
TestOps/sec
jQuery.each
// async test
setImmediate(function() {

  $.each(a, function(index, val) {
    val = pi;
  });

  callback.apply();

});
ready
for-loop
// async test
setImmediate(function() {
  for (var i = 0, len = a.length; i < len; i++) {
    e = pi;
  };

  callback.apply();

});
ready
Nimble - each
// async test
setImmediate(function() {
  _.each(a, function(item) {
    item = pi;
  });

  callback.apply();

});
ready
better for-loop
// async test
setImmediate(function() {
  for (var i = a.length; i >= 0; i--) {
    e = pi;
  }

  callback.apply();

});
ready
lodash _.each
// async test
setImmediate(function() {
  lodash.each(a, function(item) {
    item = pi;
  });

  callback.apply();

});
ready
Nimble _.each async
// async test
setImmediate(function() {
  _.each(a, function(item, callback) {
    item = pi;
    callback(null);
  }, function(err, result) {
    console.log('error', arguments);
    callback.apply();
  });

});
ready
Async.js - each
// async test
setImmediate(function() {
  async.each(a, function(item, cb) {
    item = pi;
    cb();
  }, function(err) {
    // if any of the saves produced an error, err would equal that error
    console.log('error', arguments);
    callback.apply();
  });
});
ready

Revisions

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

  • Revision 1: published by Mark Johnson on