JS: Array.reverse() vs while loop (v44)

Revision 44 of this benchmark created on


Description

Checking performance of Array.reverse() vs a quick while loop.

Preparation HTML

<script>
  var ar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
  var backwardI = len - 1;
  var forwardI = 0;
  var len = ar.length;
  
  var reverse = function(arr) {
   var result = [],
       ii = arr.length;
   for (var i = ii - 1; i !== 0; i--) {
    result.push(arr[i]);
   }
   return result;
  }
  
  Array.prototype.inlinereverse = function() {
   var len = this.length,
       forwardI = 0;
   while (forwardI < len) {
    var end = (len - 1) - forwardI;
    this.push(this[end]);
    this.splice(end, 1);
    forwardI++;
   }
  }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Array.reverse()
ar.reverse();
ready
Backward while loop
while (backwardI > -1) {
 ar.push(ar[backwardI]);
 ar.splice(backwardI, 1);
 backwardI--;
}
ready
Forward while loop
ar.inlinereverse();
ready
reverse func
reverse(ar);
ready
inline forward while loop
while (forwardI < len) {
 var end = (len - 1) - forwardI;
 ar.push(ar[end]);
 ar.splice(end, 1);
 forwardI++;
}
ready
inline new array loop
for (var i = len - 1; i !== 0; i--) {
 ar.push(arr[i]);
 ar.splice(i, 1);
}
ready

Revisions

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