splice vs rebuild array (v2)

Revision 2 of this benchmark created by Jeremy Diviney on


Description

splice is notoriously slow. wanted to see if rebuilding an array would be faster or slower than splice.

Setup

var newStrArr_splice,
    newObjArr_splice,
    newStrArr_rebuild,
    newObjArr_rebuild,
    arrayLength = 100000,
    strArr = new Array(arrayLength),
    objArr = new Array(arrayLength);
    for (var i = arrayLength - 1; i >= 0; i--) {
        var objTemplate = {something: 'stringy', id: i, attributes: {}},
            strTemplate = 'stringy-' + i,
            newObj = objTemplate;
        strArr[i] = strTemplate;
        objArr[i] = objTemplate;
    }
    
    
    var randPos = Math.round(Math.random()* (arrayLength / 2)) + (arrayLength / 4);
    
    function rebuildArray(array, index, excludeTo) {
        var newArr = [];
        for (var i = array.length - 1; i >= 0; i--) {
            if (i >= index + excludeTo) {
                newArr.push(array[i]);
            }
            if (i < index) {
                newArr.push(array[i]);
            }
        }
        return array.reverse();
    }

Teardown


    window.console.log(newStrArr_splice);
    window.console.log(newObjArr_splice);
    window.console.log(newStrArr_rebuild);
    window.console.log(newObjArr_rebuild);
  

Test runner

Ready to run.

Testing in
TestOps/sec
splice string array
var newStrArr_splice = strArr.splice(randPos, 1);
ready
splice object array
var newObjArr_splice = objArr.splice(randPos, 1);
ready
rebuild string array
var newStrArr_rebuild = rebuildArray(strArr, randPos, 1);
ready
rebuild object array
var newObjArr_rebuild = rebuildArray(objArr, randPos, 1);
ready

Revisions

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

  • Revision 1: published by michael mclaughlin on
  • Revision 2: published by Jeremy Diviney on