While vs For Queue vs Reduce (v26)

Revision 26 of this benchmark created on


Setup

var items = [],
        total = 0,
        i = 0,
        j = 0;
    for (; i < 100000; i++) {
      items[i] = Math.ceil(Math.random() * 10);
    }

Test runner

Ready to run.

Testing in
TestOps/sec
For
for (; j < items.length; j++) {
  total += items[j];
}
ready
While
while (items.length) {
  total += items.shift();
}
ready
Do
do {
  total += items.shift();
} while (items.length);
ready
Reduce
total = items.reduce(function(i, c) {
  return c + i;
}, 0)
ready
ForEach
items.forEach(function(i) {
  total += i
})
ready
While (no mutation)
while (j < items.length) {
  total += items[j];
  j++;
}
ready
For (with mutation!)
for (; j < items.length; j++) {
  total += items.shift();
}
ready
For (backward)
for (j = items.length; j >= 0; j--) {
  total += items[j];
}
ready
ForIn
for (i in items) {
  total += items[i]
}
ready

Revisions

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