Benchmarks

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.

set 1k elements at the center
N ivy gary glearray list dict
10 iv: 11057 gary: 34.8k gle: 63.5k list: 26.2k dict: 58.4k
100 iv: 7293 gary: 31.1k gle: 16.5k list: 3.4k dict: 22.4k
1000 iv: 5564 gary: 15.3k gle: 1.8k list: 288 dict: 16.7k
10k iv: 4402 gary: 11.5k gle: 191 list: 29 dict: 12.8k
100k iv: 3626 gary: 9.4k gle: 19 list: 4 dict: 11.3k
  • iv
  • gary
  • glearray
  • list
  • dict
get 1k elements at the center
N ivy gary glearray list dict
10 iv: 44048 gary: 65.9k gle: 185.1k list: 153.9k dict: 115.8k
100 iv: 26950 gary: 59.9k gle: 184.2k list: 24.4k dict: 97.7k
1000 iv: 23603 gary: 52.1k gle: 185.0k list: 2.6k dict: 90.3k
10k iv: 19716 gary: 45.6k gle: 190.5k list: 58 dict: 82.4k
100k iv: 16928 gary: 38.3k gle: 199.1k list: 3 dict: 79.9k
  • iv
  • gary
  • glearray
  • list
  • dict
iterate (map)
N ivy gary glearray list dict
10 iv: 5.0M gary: 4.5M gle: 2.5M list: 4.5M dict: 4.0M
100 iv: 1.2M gary: 914.2k gle: 200.3k list: 1.5M dict: 200.4k
1000 iv: 153k gary: 100.3k gle: 2.7k list: 140.2k dict: 16.9k
10k iv: 16k gary: 10.4k gle: 29 list: 8.2k dict: 1.5k
100k iv: 1590 gary: 1.1k gle: 0 list: 738 dict: 125
  • iv
  • gary
  • glearray
  • list
  • dict
Search Document