Benchmarks

Benchmarks have been tested against the following environment:

Darwin 20.6.0 x64
Node.JS 14.17.1
V8 8.4.371.23-node.67
Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz × 12

1000 items in queue#

 (3 x shift + 3 x push ops per 'op')

    denque x 67,659,118 ops/sec ±0.49% (94 runs sampled)
    double-ended-queue x 21,137,935 ops/sec ±0.51% (94 runs sampled)

2 million items in queue#

 (3 x shift + 3 x push ops per 'op')

    denque x 65,145,726 ops/sec ±0.66% (90 runs sampled)
    double-ended-queue x 21,171,775 ops/sec ±0.39% (96 runs sampled)

Splice#

 (1 x splice per 'op') - initial size of 100,000 items

    denque.splice x 623,905 ops/sec ±28.11% (71 runs sampled)
    native array splice x 10,837 ops/sec ±41.27% (37 runs sampled)

Remove#

 (1 x remove + 10 x push per 'op') - initial size of 100,000 items

    denque.remove x 2,303 ops/sec ±34.14% (6 runs sampled)
    native array splice - Fails to complete: "JavaScript heap out of memory"

Remove One#

 (1 x removeOne + 10 x push per 'op') - initial size of 100,000 items

    denque.removeOne x 863,146 ops/sec ±0.28% (94 runs sampled)
    native array splice x 2,802 ops/sec ±1.73% (91 runs sampled)