The tables shows the performance of the libraries in relation to the fastest. The numbers denote how many times slower than the fastest the library is. The graphs are interactive. Controls are revealed by hovering.
Lower is better.
GitHub repository - How to run the benchmarks
Constructs a sequence of size n by repeatedly appending to it.
n | 10 | 50 | 100 | 250 | 500 | 1000 | 5000 | 10000 |
---|---|---|---|---|---|---|---|---|
List |
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Immutable.js |
13.43x
slower
|
15.43x
slower
|
16.86x
slower
|
17.51x
slower
|
17.48x
slower
|
16.99x
slower
|
15.80x
slower
|
16.25x
slower
|
Ramda |
2.92x
slower
|
6.20x
slower
|
12.44x
slower
|
33.59x
slower
|
73.73x
slower
|
158.72x
slower
|
815.72x
slower
|
1634.20x
slower
|
Mori |
2.82x
slower
|
2.91x
slower
|
3.27x
slower
|
3.33x
slower
|
3.30x
slower
|
3.20x
slower
|
2.97x
slower
|
3.01x
slower
|
Concatenates two sequences of size n.
n | 10 | 50 | 100 | 250 | 500 | 1000 | 5000 | 10000 |
---|---|---|---|---|---|---|---|---|
List |
1.00x
fastest
|
1.03x
slower
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Lodash |
2.72x
slower
|
2.07x
slower
|
3.98x
slower
|
8.21x
slower
|
9.83x
slower
|
9.14x
slower
|
41.04x
slower
|
69.49x
slower
|
Array#concat |
1.14x
slower
|
1.00x
fastest
|
1.85x
slower
|
3.37x
slower
|
3.89x
slower
|
3.44x
slower
|
15.37x
slower
|
27.75x
slower
|
Immutable.js |
29.51x
slower
|
28.18x
slower
|
54.08x
slower
|
97.39x
slower
|
112.73x
slower
|
112.44x
slower
|
544.14x
slower
|
956.34x
slower
|
maps a function over a sequence.
n | 20 | 100 | 500 | 1000 | 10000 |
---|---|---|---|---|---|
List |
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Array#map |
2.82x
slower
|
3.31x
slower
|
3.80x
slower
|
3.99x
slower
|
3.95x
slower
|
Lodash |
2.69x
slower
|
3.08x
slower
|
3.65x
slower
|
3.80x
slower
|
3.78x
slower
|
Immutable.js |
31.30x
slower
|
39.49x
slower
|
37.66x
slower
|
36.29x
slower
|
44.68x
slower
|
foldl/reduce over a sequence.
n | 20 | 100 | 1000 | 10000 |
---|---|---|---|---|
List |
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Array#reduce |
5.62x
slower
|
5.92x
slower
|
6.96x
slower
|
7.05x
slower
|
Lodash |
5.17x
slower
|
5.71x
slower
|
6.85x
slower
|
6.94x
slower
|
Immutable.js |
19.06x
slower
|
19.09x
slower
|
21.50x
slower
|
33.93x
slower
|
Mori |
4.31x
slower
|
5.06x
slower
|
6.01x
slower
|
6.16x
slower
|
Slice 25% off of both ends of a sequence.
n | 10 | 100 | 500 | 1000 | 10000 |
---|---|---|---|---|---|
List |
1.29x
slower
|
1.11x
slower
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Immutable.js |
3.78x
slower
|
4.71x
slower
|
2.56x
slower
|
2.84x
slower
|
2.25x
slower
|
Array#slice |
1.00x
fastest
|
1.00x
fastest
|
1.97x
slower
|
3.71x
slower
|
21.65x
slower
|
Access each element in a sequence by index.
n | 50 | 100 | 1000 | 5000 | 10000 |
---|---|---|---|---|---|
List |
1.48x
slower
|
2.63x
slower
|
3.45x
slower
|
4.45x
slower
|
4.51x
slower
|
Array |
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Immutable.js |
2.89x
slower
|
3.64x
slower
|
3.93x
slower
|
5.21x
slower
|
5.24x
slower
|
Update elements at location 0.25, 0.5, and 0.75 i a sequence.
n | 10 | 50 | 100 | 250 | 500 | 1000 | 5000 | 10000 |
---|---|---|---|---|---|---|---|---|
List |
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.24x
slower
|
1.02x
slower
|
1.02x
slower
|
Immutable.js |
3.30x
slower
|
2.50x
slower
|
2.18x
slower
|
1.93x
slower
|
1.90x
slower
|
1.94x
slower
|
1.81x
slower
|
1.85x
slower
|
Ramda |
6.00x
slower
|
4.05x
slower
|
4.21x
slower
|
8.30x
slower
|
12.61x
slower
|
26.04x
slower
|
103.44x
slower
|
169.82x
slower
|
mori |
1.37x
slower
|
1.55x
slower
|
1.42x
slower
|
1.24x
slower
|
1.11x
slower
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Insert an element in the middle of a sequence.
n | 10 | 50 | 100 | 250 | 500 | 1000 | 5000 | 10000 |
---|---|---|---|---|---|---|---|---|
List |
1.17x
slower
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Immutable.js |
19.03x
slower
|
22.38x
slower
|
19.09x
slower
|
26.76x
slower
|
41.57x
slower
|
58.19x
slower
|
254.81x
slower
|
451.13x
slower
|
Ramda |
1.00x
fastest
|
1.25x
slower
|
1.20x
slower
|
1.78x
slower
|
2.84x
slower
|
4.21x
slower
|
15.54x
slower
|
29.15x
slower
|
Iterate over a sequence with a for-of loop.
n | 10 | 50 | 100 | 250 | 500 | 1000 | 5000 |
---|---|---|---|---|---|---|---|
List |
2.47x
slower
|
2.50x
slower
|
4.41x
slower
|
5.04x
slower
|
5.59x
slower
|
5.76x
slower
|
5.95x
slower
|
Immutable.js |
17.45x
slower
|
15.58x
slower
|
16.95x
slower
|
17.12x
slower
|
17.43x
slower
|
17.80x
slower
|
26.62x
slower
|
Array |
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
Iterating over a list with foldl vs with an iterator.
n | 100 | 1000 | 10000 |
---|---|---|---|
List, foldl |
1.00x
fastest
|
1.00x
fastest
|
1.00x
fastest
|
List, iterator, for-of |
1.90x
slower
|
1.80x
slower
|
1.76x
slower
|
List, iterator, manual |
1.64x
slower
|
1.63x
slower
|
1.59x
slower
|