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 spreadArrayComparisonArrow(array, delim) {
    return array.reduce((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;
}
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);
  • spreadArrayComparisonArrow

     
    spreadArrayComparisonArrow(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
    spreadArrayComparisonArrow

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 8 years ago)
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.935 (beta) Yowser/2.5 Safari/537.36
Yandex Browser 16 on Windows
View result in a separate tab
Test name Executions per second
ComparisonAndConcat 48417.8 Ops/sec
Concat 47406.9 Ops/sec
Comparison 579770.4 Ops/sec
Pop 562051.8 Ops/sec
Shift 538231.5 Ops/sec
Slice 472431.6 Ops/sec
TailSlice 466392.9 Ops/sec
Slice2 499527.1 Ops/sec
For 964282.6 Ops/sec
ForReverse 294352.6 Ops/sec
ForComparison 996697.2 Ops/sec
ForWithInit 995872.8 Ops/sec
spreadArrayComparisonArrow 565400.8 Ops/sec