Test case details

Preparation Code

<script src="http://code.jquery.com/jquery-1.8.2.min.js"> </script>
var i,         value,         length,         values = [],         sum = 0,         context = values;             for (i = 0; i < 10000; i++) {         values[i] = Math.random();     }         function add(val) {         sum += val;     }     function addEach(k, val) {         sum += val;     }         var toString = Object.prototype.toString;         function isArray(obj) {         return toString.call(obj) === '[object Array]';     }         function isObject(obj) {         return toString.call(obj) === '[object Object]';     }         function isString(obj) {         return toString.call(obj) === '[object String]';     }         function each(obj, iterator) {         var key, length;         if (!obj) {                 return;         }         length = obj.length;             if (isArray(obj) || isString(obj)) {                 for(key = 0; key < length; key += 1) {                         iterator(obj[key], key, obj);                 }                 return obj;         }             if (isObject(obj)) {                 for(key in obj) {                         if (obj.hasOwnProperty(key)) {                                 iterator(obj[key], key, obj);                         }                 }                 return obj;         }             return obj;     };
    i = 0;     value = 0;     length = 0;     values = [];     sum = 0;

Test cases

Test #1

values.forEach(add);

Test #2

var arr = values,     length = arr.length; for (var i = 0; i < length; i++) {     add(arr[i], i, arr); }

Test #3

length = values.length; for (i = 0; i < length; i++) {     add.call(context, values[i], i, values); }

Test #4

$.each(values, addEach);

Test #5

for (i = 0; (value = values[i]) !== undefined; i++) {     add(value, i, values); }

Test #6

for (i = 0; (value = values[i]) !== undefined; i++) {     add.call(context, value, i, values); }

Test #7

values.map(add);

Test #8

each(values, add);

Test #9

var arr = values; for (var i = 0; i < arr.length; i++) {     add(arr[i], i, arr); }

Test #10

var arr = values; for (var i = 0, n = arr.length; i < n; i++) {     add(arr[i], i, arr); }