Index of smallest (v7)

Revision 7 of this benchmark created by Hermann Stamm-Wilbrandt on


Description

Setup

function makeRandomArray(length) {
     var a = new Array(length);
     for (var i = 0; i < a.length; i++) {
      a[i] = Math.random();
     }
     return a;
    }
    
    var array100k = makeRandomArray(100 * 1000);
    var array200k = makeRandomArray(200 * 1000);
    var array250k = makeRandomArray(250 * 1000);
    
    function indexOfSmallestManual(a) {
     var lowest = 0;
     for (var i = 1, l = a.length; i < l; i++) {
      if (a[i] < a[lowest]) lowest = i;
     }
     return lowest;
    }
    
    function indexOfSmallestReduce(a) {
     return a.reduce(function(lowest, next, index) {
                       return next < a[lowest] ? index : lowest; },
                     0);
    }
    
    function indexOfSmallestMinIndexOf(a) {
     return a.indexOf(Math.min.apply(Math, a));
    }
    
    function indexOfSmallestRecursive(a, j,  m, i,  /* aux. var */ b) {
      if (b = a.shift()) { 
        if (b < m) { return indexOfSmallestRecursive(a, j+1,  b, j); }
        else       { return indexOfSmallestRecursive(a, j+1,  m, i); }
      }
      else return i;
    }

Test runner

Ready to run.

Testing in
TestOps/sec
manual 100k
indexOfSmallestManual(array100k);
 
ready
manual 200k
indexOfSmallestManual(array200k);
 
ready
manual 250k
indexOfSmallestManual(array250k);
 
ready
reduce 100k
indexOfSmallestReduce(array100k);
 
ready
reduce 200k
indexOfSmallestReduce(array200k);
 
ready
reduce 250k
indexOfSmallestReduce(array250k);
 
ready
min/indexOf 100k
indexOfSmallestMinIndexOf(array100k);
 
ready
min/indexOf 200k
indexOfSmallestMinIndexOf(array200k);
 
ready
min/indexOf 250k
indexOfSmallestMinIndexOf(array250k);
 
ready
recursive 100k
indexOfSmallestRecursive(array100k, 0,  array100k[0], 0);
ready

Revisions

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