native vs. map vs. underscore vs lo-dash vs jquery vs coffee (v84)

Revision 84 of this benchmark created on


Description

This test compares the performance of a naive array loop/push vs. array map vs. underscore vs lo-dash vs jquery

Preparation HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.2/underscore-min.js"></script>
<script>
var underscore = _.noConflict();
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.3.0/lodash.min.js"></script>
<script>
var lodash = _.noConflict();
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.10.0/dojo/dojo.js"></script>

Setup

var arr = underscore.shuffle(underscore.range(1));
    var dojoArr = require("dojo/_base/array");

Test runner

Ready to run.

Testing in
TestOps/sec
native loop/push
var r = []
for (var i = 0; i < arr.length; i++) {
  var num = arr[i]
  r.push(num * num)
}
ready
array map
var r = arr.map(function(num) {
  return num * num;
});
ready
underscore
var r = underscore.map(arr, function(num) {
  return num * num;
});
ready
lo-dash
var r = lodash.map(arr, function(num) {
  return num * num;
});
ready
jQuery
var r = $.map(arr, function(num) {
  return num * num;
});
ready
dojo array.map
var r = dojoArr.map(arr, function(num) {
  return num * num;
});
ready
native loop/insert
var r = new Array(arr.length);
for (var i = 0; i < arr.length; i++) {
  var num = arr[i]
  r[i] = num * num;
}
ready
coffee
var arr2, item;

arr2 = (function() {
  var i, len, results;
  results = [];
  for (i = 0, len = arr.length; i < len; i++) {
    item = arr[i];
    results.push(item * item);
  }
  return results;
})();
ready

Revisions

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