List benchmarks

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

append

Constructs a sequence of size n by repeatedly appending to it.

05k10k00.10.20.30.4
RamdaImmutable.jsMoriListNumber of elementsTime spent
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

concat

Concatenates two sequences of size n.

05k10k00.00050.0010.00150.0020.00250.003
Immutable.jsLodashArray#concatListNumber of elementsTime spent
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

map

maps a function over a sequence.

05k10k00.00050.0010.0015
Immutable.jsArray#mapLodashListNumber of elementsTime spent
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

foldl/reduce over a sequence.

05k10k0100μ200μ300μ400μ500μ
Immutable.jsArray#reduceLodashMoriListNumber of elementsTime spent
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

Slice 25% off of both ends of a sequence.

05k10k010μ15μ20μ
Array#sliceImmutable.jsListNumber of elementsTime spent
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

random access

Access each element in a sequence by index.

05k10k050μ100μ150μ
Immutable.jsListArrayNumber of elementsTime spent
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

Update elements at location 0.25, 0.5, and 0.75 i a sequence.

05k10k050μ100μ150μ200μ
RamdaImmutable.jsListmoriNumber of elementsTime spent
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

Insert an element in the middle of a sequence.

05k10k00.00050.0010.0015
Immutable.jsRamdaListNumber of elementsTime spent
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

iterator

Iterate over a sequence with a for-of loop.

020004000050μ100μ150μ200μ250μ300μ
Immutable.jsListArrayNumber of elementsTime spent
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

foldl vs iterator

Iterating over a list with foldl vs with an iterator.

05k10k020μ40μ60μ80μ100μ120μ
List, iterator, for-ofList, iterator, manualList, foldlNumber of elementsTime spent
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