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: 781k
gle: 2.9M
list: 3.8M
dict: 1.7M
100
iv: 172k
gary: 73.1k
gle: 112k
list: 808k
dict: 96.8k
1000
iv: 17.8k
gary: 5945
gle: 1308
list: 91.7k
dict: 9725
10k
iv: 2041
gary: 498
gle: 13
list: 9274
dict: 607
100k
iv: 203
gary: 41
gle: n/a
list: 925
dict: 32
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: 9.44
gle: 1051
list: 221
dict: 13.5
100
iv: 253
gary: 7.94
gle: 896
list: 189
dict: 11.3
1000
iv: 211
gary: 2.72
gle: 367
list: 72.6
dict: 3.83
10k
iv: 148
gary: n/a
gle: 53.2
list: 10.2
dict: n/a
100k
iv: 119
gary: n/a
gle: 5.52
list: 1.10
dict: n/a
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: 5406
gle: 1294
list: 534
dict: 7810
100
iv: 4166
gary: 5816
gle: 1102
list: 458
dict: 7151
1000
iv: 3901
gary: 4987
gle: 446
list: 185
dict: 6839
10k
iv: 3040
gary: 4184
gle: 64.2
list: 26.3
dict: 5376
100k
iv: 2505
gary: 3545
gle: 5.85
list: 2.40
dict: 3859
iv
gary
glearray
list
dict
prepend 1k elements
N
ivy
gary
glearray
dict
10
iv: 1856
gary: 11.5
gle: 1269
dict: 7780
100
iv: 1911
gary: 9.73
gle: 1080
dict: 7380
1000
iv: 1659
gary: 3.34
gle: 448
dict: 6864
10k
iv: 1559
gary: n/a
gle: 64.4
dict: 5383
100k
iv: 1371
gary: n/a
gle: 5.76
dict: 3870
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.