Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Linked List Queue vs Double Array Queue vs Queue with Map
(version: 0)
Testing a linked list queue vs a double list queue vs Queue with Map for different performance scenarios.
Comparing performance of:
Double Array enque vs Linked List enque vs Queue enqeue vs Array deque vs LinkedList deque vs Queue deque
Created:
2 years ago
by:
Guest
Jump to the latest result
Script Preparation code:
function createLinkedListQueue() { let length = 0 let head = undefined let tail = undefined return { enqueue(value) { enqueueNode(value) }, dequeue() { return dequeueNode() }, size() { return length }, head() { return head }, tail() { return tail } } function enqueueNode(value) { const node = { value, next: undefined } if(!head) { head = node tail = node } else { tail.next = node tail = node } length += 1 } function dequeueNode() { if(head) { const value = head.value head = head.next length -= 1 return value } tail = undefined return undefined } } function createDoubleArrayQueue() { return { input: [], output: [], enqueue(element) { this.input.push(element) }, dequeue() { if(this.output.length === 0) { this.pivot() } return this.output.pop() }, pivot() { this.output = this.input.reverse() this.input = [] }, isEmpty() { return this.input.length === 0 && this.output.length === 0 } } } class Queue { #queue = new Map() #head = 0 #tail = 0 enqueue(item) { this.#queue.set(this.#tail, item) this.#tail++ } dequeue() { if (this.#head === this.#tail) return; const value = this.#queue.get(this.#head) this.#queue.delete(this.#tail) this.#head++ return value } size() { return this.#tail - this.#head } } var doubleQ = createDoubleArrayQueue() var linkedListQ = createLinkedListQueue() var queue = new Queue() var queueSize = 1000
Tests:
Double Array enque
for(let i = 0; i < queueSize; i++) { doubleQ.enqueue(i) }
Linked List enque
for(let i = 0; i < queueSize; i++) { linkedListQ.enqueue(i) }
Queue enqeue
for(let i = 0; i < queueSize; i++) { queue.enqueue(i) }
Array deque
for(let i = 0; i < queueSize; i++) { linkedListQ.dequeue() }
LinkedList deque
for(let i = 0; i < queueSize; i++) { linkedListQ.dequeue() }
Queue deque
for(let i = 0; i < queueSize; i++) { queue.dequeue() }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (6)
Previous results
Fork
Test case name
Result
Double Array enque
Linked List enque
Queue enqeue
Array deque
LinkedList deque
Queue deque
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
It seems like we have benchmark results for different data structures, specifically: 1. Double Array enque 2. Array deque 3. Queue deque 4. Linked List enque 5. LinkedList deque And here are the top 5 fastest execution times per second: 1. **Double Array enque**: 5952.25634765625 executions/second 2. **Queue enqeue**: 2036.1312255859375 executions/second 3. **Array deque**: 3725.603759765625 executions/second 4. **Queue deque**: 3530.57080078125 executions/second 5. **Linked List enque**: 2640.0 executions/second It appears that Double Array enque is the fastest, followed closely by Queue enqeue and Queue deque. These results suggest that using a double array for enqueue operations may be more efficient than using other data structures for this specific use case. Would you like me to help with anything else or provide further analysis on these results?
Related benchmarks:
Map vs Map vs Foreach vs for
map vs forEach Chris
map vs forEach Chris v2b
Array deconstruction vs array push
fill array with value: map(callback) vs fill(value) 2
Comments
Confirm delete:
Do you really want to delete benchmark?