Script Preparation code:
x
 
var testArray = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
var delim = {'a': 1};
function spreadArrayComparisonAndConcat(array, delim) {
    return array.reduce(function (result, item, i) {
        return i === 0 ? result.concat(item) : result.concat(delim, item);
    }, []);
}
function spreadArrayConcat(array, delim) {
    return array.reduce(function (result, item, i) {
        return result.concat(delim, item);
    }, []).slice(0, -1);
}
function spreadArrayComparison(array, delim) {
    return array.reduce(function (result, item, i) {
         if (i === 0) {
           result.push(item);
         } else {
           result.push(delim, item);
         }
      
        return result;
    }, []);
}
function spreadArrayPop(array, delim) {
    var r = array.reduce(function (result, item) {
        result.push(item, delim);      
        return result;
    }, []);
    r.pop();
    return r;
}
function spreadArrayShift(array, delim) {
    var r = array.reduce(function (result, item) {
        result.push(delim, item);      
        return result;
    }, []);
    r.shift();
    return r;
}
function spreadArraySlice(array, delim) {
    return array.reduce(function (result, item) {
        result.push(delim, item);      
        return result;
    }, []).slice(1);
}
function spreadArrayTailSlice(array, delim) {
    return array.reduce(function (result, item) {
        result.push(delim, item);
        
        return result;
    }, []).slice(0, -1);
}
function spreadArraySlice2(array, delim) {
    return array.slice(1).reduce(function (result, item) {
        result.push(delim, item);      
        return result;
    }, []);
}
function spreadArrayFor(arr, delim) {
    var result = [];
    for (var i = 0; i < arr.length; i++) {
        result.push(arr[i], delim);
    };
    result.pop();
    return result;
}
function spreadArrayForReverse(arr, delim) {
    var result = []
    for (var i = arr.length - 1; i >= 0; i--) {
        result.unshift(arr[i], delim);
    };
    result.pop();
    return result;
}
function spreadArrayForComparison(arr, delim) {
    var result = [];
    for (var i = 0; i < arr.length; i++) {
        if (i === 0) {
          result.push(arr[i]);
        } else {
          result.push(delim, arr[i]);
        }
    };
    return result;
}
function spreadArrayForWithInit(arr, delim) {
    var result = [arr[0]]
    for (var i = 1; i < arr.length; i++) {          
        result.push(delim, arr[i]);
    };
    return result;
}
function spreadArrayForEach(arr, delim) {
    var result = [];
    arr.forEach(function(el, i){
        if (i === 0) {
          result.push(el);
        } else {
          result.push(delim, el);
        }      
    });
    return result;
}
Tests:
  • ComparisonAndConcat

     
    spreadArrayComparisonAndConcat(testArray, delim);
  • Concat

     
    spreadArrayConcat(testArray, delim);
  • Comparison

     
    spreadArrayComparison(testArray, delim);
  • Pop

     
    spreadArrayPop(testArray, delim);
  • Shift

     
    spreadArrayShift(testArray, delim);
  • Slice

     
    spreadArraySlice(testArray, delim);
  • TailSlice

     
    spreadArrayTailSlice(testArray, delim);
  • Slice2

     
    spreadArraySlice2(testArray, delim);
  • For

     
    spreadArrayFor(testArray, delim);
  • ForReverse

     
    spreadArrayForReverse(testArray, delim);
  • ForComparison

     
    spreadArrayForComparison(testArray, delim);
  • ForWithInit

     
    spreadArrayForWithInit(testArray, delim);
  • ForEach

     
    spreadArrayForEach(testArray, delim);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    ComparisonAndConcat
    Concat
    Comparison
    Pop
    Shift
    Slice
    TailSlice
    Slice2
    For
    ForReverse
    ForComparison
    ForWithInit
    ForEach

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 8 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.0.2765 Safari/537.36
Yandex Browser 16 on Mac OS X 10.11.6
View result in a separate tab
Test name Executions per second
ComparisonAndConcat 45051.5 Ops/sec
Concat 43514.2 Ops/sec
Comparison 446449.0 Ops/sec
Pop 410286.7 Ops/sec
Shift 426345.3 Ops/sec
Slice 382134.0 Ops/sec
TailSlice 388003.8 Ops/sec
Slice2 418018.4 Ops/sec
For 906487.6 Ops/sec
ForReverse 316766.3 Ops/sec
ForComparison 952939.3 Ops/sec
ForWithInit 999513.8 Ops/sec
ForEach 451048.1 Ops/sec