Index of smallest (v4)

Revision 4 of this benchmark created 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; i < a.length; i++) {
      if (a[i] < a[lowest]) lowest = i;
     }
     return lowest;
    }
    
    function indexOfSmallestManual_2(a) {
                var lowest = a.length - 1;
                var i  = lowest - 1;
                var lv = a[lowest];
                var j;
                
                for (; i > -1; i--) {
                        j = a[i];
                        if(j >= lv)
                                continue;
    
                        lv = j;
                        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));
    }

Test runner

Ready to run.

Testing in
TestOps/sec
manual 100k
indexOfSmallestManual(array100k);
 
ready
manual 200k
indexOfSmallestManual(array200k);
 
ready
manual 250k
indexOfSmallestManual(array250k);
 
ready
manual_2 100k
indexOfSmallestManual_2(array100k);
 
ready
manual_2 200k
indexOfSmallestManual_2(array200k);
 
ready
manual_2 250k
indexOfSmallestManual_2(array250k);
 
ready
min/indexOf 100k
indexOfSmallestMinIndexOf(array100k);
 
ready
min/indexOf 200k
indexOfSmallestMinIndexOf(array200k);
 
ready
min/indexOf 250k
indexOfSmallestMinIndexOf(array250k);
 
ready

Revisions

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