Script Preparation code:
x
 
var sampleData = [];
for (var i=0; i < 100; i++){ 
  sampleData.push({value: (Math.floor(Math.random() * 1000))});
}
var selectorFn = function(x) { 
  return x.value;  
}
var combSort = function (source, selectorFn, sortDirection) {
    var result = source.slice();
    var count = result.length;
    var gap = count;
    var swapped = true;
    while (gap > 1 || swapped) {
      if (gap > 1) {
        gap = Math.floor(gap / 1.24733);
      }
      var i = 0;
      swapped = false;
      while ((i + gap) < count) {
        var item1 = result[i];
        var item2 = result[i + gap];
        if (shouldBeSwaped(selectorFn(item1), selectorFn(item2), selectorFn, sortDirection)) {
          result[i] = item2;
          result[i + gap] = item1;
          swapped = true;
        }
        i++;
      }
    }
  
    return result;
}
 var shouldBeSwaped = function(value, valueToCompare, selectorFn, sortDirection) {
    let less = value > valueToCompare;
    return sortDirection === "asc" ? less : !less;
  }
Tests:
  • Native Sort DESC

     
    var order = "desc";
    sampleData.sort(function(a,b){
        var x = selectorFn(a); var y = selectorFn(b);
        var res = ((x < y) ? -1 : ((x > y) ? 1 : 0));
        return order === "desc" ? -1*res : res;
    })
  • Native Sort ASC

     
    var order = "asc";
    sampleData.sort(function(a,b){
        var x = selectorFn(a); var y = selectorFn(b);
        var res = ((x < y) ? -1 : ((x > y) ? 1 : 0));
        return order === "desc" ? -1*res : res;
    })
  • Comb Sort DESC

     
    var order = "asc";
    combSort(sampleData, selectorFn, order);
  • Comb Sort ASC

     
    var order = "asc";
    combSort(sampleData, selectorFn, order);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Native Sort DESC
    Native Sort ASC
    Comb Sort DESC
    Comb Sort ASC

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 8 years ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Chrome 52 on Windows
View result in a separate tab
Test name Executions per second
Native Sort DESC 4445.7 Ops/sec
Native Sort ASC 3932.7 Ops/sec
Comb Sort DESC 5221.1 Ops/sec
Comb Sort ASC 5122.5 Ops/sec