Benchmarks were run using Gleam 1.8, Erlang/OTP-27.1.2 on Windows 11 and an AMD Ryzen 7 PRO 5850U.
The numbers are instructions per second (IPS). Higher is better.
The goal of iv is to provide consistent, reliable performance across all kinds of workloads.
create from list
N
ivy
gary
glearray
list
dict
10
iv: 1.0M
gary: 3.0M
gle: 5.3M
list: 14.3M
dict: 3.8M
100
iv: 172k
gary: 226.7k
gle: 239.6k
list: 3.0M
dict: 206.3k
1000
iv: 17.8k
gary: 15.9k
gle: 2.8k
list: 338.3k
dict: 18.1k
10k
iv: 2041
gary: 1.1k
gle: 29
list: 32.3k
dict: 1.1k
100k
iv: 203
gary: 92
gle: 0
list: 3.1k
dict: 53
iv
gary
glearray
list
dict
For lists, the provided numbers are the performance of the baseline list.range call.
insert 1k elements at the center
N
ivy
gary
glearray
list
dict
10
iv: 206
gary: 33
gle: 2.7k
list: 609
dict: 34
100
iv: 253
gary: 26
gle: 2.3k
list: 510
dict: 29
1000
iv: 211
gary: 10
gle: 951
list: 194
dict: 10
10k
iv: 148
gary: 1
gle: 141
list: 26
dict: 1
100k
iv: 119
gary: 0
gle: 14
list: 3
dict: 0
iv
gary
glearray
list
dict
Note: Only iv and glearray provide native insert algorithms. Others where implemented by copying the existing array, with the new item added.
append 1k elements
N
ivy
gary
glearray
list
dict
10
iv: 3281
gary: 15.0k
gle: 2.7k
list: 1.1k
dict: 17.4k
100
iv: 4166
gary: 13.9k
gle: 2.4k
list: 867
dict: 17.0k
1000
iv: 3901
gary: 12.0k
gle: 961
list: 335
dict: 14.5k
10k
iv: 3040
gary: 9.1k
gle: 140
list: 46
dict: 10.6k
100k
iv: 2505
gary: 8.0k
gle: 14
list: 5
dict: 5.5k
iv
gary
glearray
list
dict
prepend 1k elements
N
ivy
gary
glearray
dict
10
iv: 1856
gary: 35
gle: 2.7k
dict: 17.1k
100
iv: 1911
gary: 27
gle: 2.3k
dict: 16.5k
1000
iv: 1659
gary: 10
gle: 954
dict: 14.2k
10k
iv: 1559
gary: 1
gle: 141
dict: 10.2k
100k
iv: 1371
gary: 0
gle: 14
dict: 6.3k
iv
gary
glearray
dict
Note: lists where excluded to make the chart more readable. Lists provide constant prepends regardless of list size. I was able to achieve 44.2k IPS using lists in this benchmark.