Skip to content

Instantly share code, notes, and snippets.

@trevnorris
Created May 19, 2015 21:35
Show Gist options
  • Select an option

  • Save trevnorris/e9052b7f2477705ef1f5 to your computer and use it in GitHub Desktop.

Select an option

Save trevnorris/e9052b7f2477705ef1f5 to your computer and use it in GitHub Desktop.
'use strict';
function spliceOne(array, index) {
var newLength = array.length - 1;
for (var i = index; i < newLength; ++i) {
array[i] = array[i + 1];
}
array.length = newLength;
}
function spliceOneOld(array, index) {
for (var k = index + 1, n = array.length; k < n; index += 1, k += 1) {
array[index] = array[k];
}
array.pop();
}
function runSplice(arr, index) {
for (var i = 0; i < 1e7; i++) {
arr.splice(index, 1);
arr.push(100);
}
}
function runSpliceOne(arr, index) {
for (var i = 0; i < 1e7; i++) {
spliceOne(arr, index);
arr.push(100);
}
}
function runSpliceOneOld(arr, index) {
for (var i = 0; i < 1e7; i++) {
spliceOneOld(arr, index);
arr.push(100);
}
}
(function runner(fns) {
if (fns.length === 0)
return;
var fn = fns.pop();
var arr = new Array(150);
for (var i = 0; i < arr.length; ++i) {
arr[i] = i;
}
var t = process.hrtime();
fn(arr, 5);
t = process.hrtime(t);
console.log(fn.name + ': ', ((t[0] * 1e9 + t[1]) / 1e7).toFixed(1));
setImmediate(runner, fns);
}([runSplice, runSpliceOne, runSpliceOneOld]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment