Array Iteration - DESTRCUTION OKAY (v17)

Revision 17 of this benchmark created by 16807 on


Description

Compare iterating forward or backwards of an array

Setup

var arr = [];
    for (var i = 0; i < 10000; ++i) {
      arr.push(Math.random());
    }
    
    
    var func = function() {};

Test runner

Ready to run.

Testing in
TestOps/sec
forwards
for (var i = 0; i < arr.length; ++i) {
  func(arr[i]);
}
ready
backwards
for (var i = arr.length - 1; i >= 0; --i) {
  func(arr[i]);
}
ready
Hard Coded Forward
for (var i = 0; i < 10000; ++i) {
  func(arr[i]);
}
ready
Cached Forward Iteration
for (var i = 0, c = arr.length; i < c; i++) {
  func(arr[i]);
}
ready
cached forward 2
var c = arr.length
for (var i = 0; i < c; i++) {
  func(arr[i]);
}
ready
backwards while
var i = arr.length;
while (i--) {
  func(arr[i]);
}
ready
while length (shift - DESTRUCTIVE)
while (arr && arr.length) {
  func(arr.shift());
}
ready
while length 2 (shift, no sanity - DESTRUCTIVE)
while (arr.length) {
  func(arr.shift());
}
ready
Array.prototype.forEach
arr.forEach(func);
ready
for in
for (var i in arr) {
  func(arr[i]);
}
ready
slice & while shift
var sliced = arr.slice(),
  i;

while (i = sliced.shift()) {
  func(i);
}
ready
while length: pop DESTRUCTIVE
while (arr.length) {
  func(arr.pop());
}
ready
while length: pop unshift DESTRUCTIVE, BACKUP
var save = [],
  item;

while (arr.length) {
  func(item = arr.pop());
  save.unshift(item);
}
ready
while length: shift push DESTRUCTIVE, BACKUP
var save = [],
  item;

while (arr.length) {
  func(item = arr.shift());
  save.push(item);
}
ready
concat & while shift
var cat = [].concat(arr),
  i;

while (i = cat.shift()) {
  func(i);
}
ready
while shift: push DESTRUCTIVE, BACKUP
var save = [],
  item;

while (item = arr.shift()) {
  func(item);
  save.push(item);
}
ready
for length: pop unshift DESTRUCTIVE, BACKUP
for (var save =[], item = arr.pop(); 
     arr.length; 
     save.unshift(item), item = arr.pop()){
  func(item);
}
ready
for length: shift push DESTRUCTIVE, BACKUP
for (var save =[], item = arr.shift(); 
     arr.length; 
     save.push(item), item = arr.shift()){
  func(item);
}
ready
for pop: shift DESTRUCTIVE, BACKUP
for (var save =[], item; item = arr.pop(); save.unshift(item)){
  func(item);
}
ready
for shift: push DESTRUCTIVE, BACKUP
for (var save =[], item; item = arr.shift(); save.push(item)){
  func(item);
}
ready

Revisions

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