Last active
December 19, 2015 16:49
-
-
Save dfellis/5986471 to your computer and use it in GitHub Desktop.
Beware JS Arrays as FIFO queues over 100k items
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
double queue 100000 12 | |
double queue 200000 18 | |
reverse queue 100000 2374 | |
reverse queue 200000 23373 | |
queue 100000 9 | |
queue 200000 28699 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function testDoubleQueue(count) { | |
var startTime = Date.now(); | |
var arr1 = [], arr2 = []; | |
for(var i = 0; i < count/2; i++) { | |
arr1.push(i); | |
arr2.push(i+count/2); | |
} | |
while(arr1.length) { | |
arr1.shift(); | |
} | |
while(arr2.length) { | |
arr2.shift(); | |
} | |
var endTime = Date.now(); | |
console.log('double queue', count, endTime - startTime); | |
} | |
function testReverseQueue(count) { | |
var startTime = Date.now(); | |
var arr = []; | |
for(var i = 0; i < count; i++) { | |
arr.unshift(i); | |
} | |
while(arr.length) { | |
arr.pop(); | |
} | |
var endTime = Date.now(); | |
console.log('reverse queue', count, endTime - startTime); | |
} | |
function testQueue(count) { | |
var startTime = Date.now(); | |
var arr = []; | |
for(var i = 0; i < count; i++) { | |
arr.push(i); | |
} | |
while(arr.length) { | |
arr.shift(); | |
} | |
var endTime = Date.now(); | |
console.log('queue', count, endTime - startTime); | |
} | |
testDoubleQueue(100000); | |
testDoubleQueue(200000); | |
testReverseQueue(100000); | |
testReverseQueue(200000); | |
testQueue(100000); | |
testQueue(200000); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment