vector-hashtables
A brief history of this library is given in this blog post.
Benchmarks vs hashtables
(and vector
where relevant)
Benchmarks below are produced under GHC 9.2.5, and can be reproduced locally with
cabal bench --benchmark-options="--csv results.csv"
bench-show report results.csv
(You will need the bench-show
tool, which is available from Hackage.)
Benchmark default(ns)
----------------------------------------------------------------- ------------
Comparison/1000/insert/hashtables basic 47112.15
Comparison/1000/insert/vector-hashtables boxed 22941.55
Comparison/1000/insert/vector-hashtables unboxed keys 22338.54
Comparison/1000/insert/vector-hashtables 19460.33
Comparison/1000/insert/mutable vector boxed 3216.07
Comparison/1000/insert/mutable vector 659.46
Comparison/1000/insert (resize)/hashtables basic 158026.86
Comparison/1000/insert (resize)/vector-hashtables boxed 42164.21
Comparison/1000/insert (resize)/vector-hashtables unboxed keys 40334.65
Comparison/1000/insert (resize)/vector-hashtables 37761.08
Comparison/1000/insert, delete/hashtables basic 85218.96
Comparison/1000/insert, delete/vector-hashtables 36199.84
Comparison/1000/find/hashtables basic 33857.19
Comparison/1000/find/vector-hashtables 14205.24
Comparison/1000/find/vector-hashtables (frozen) 12257.88
Comparison/1000/lookupIndex/hashtables basic 31842.70
Comparison/1000/lookupIndex/vector-hashtables 14140.17
Comparison/1000/fromList/hashtables basic 161048.28
Comparison/1000/fromList/vector-hashtables 48052.28
Comparison/1000/toList/hashtables basic 9569.82
Comparison/1000/toList/vector-hashtables 12600.58
Comparison/10000/insert/hashtables basic 983062.29
Comparison/10000/insert/vector-hashtables boxed 225218.39
Comparison/10000/insert/vector-hashtables unboxed keys 212758.35
Comparison/10000/insert/vector-hashtables 186573.02
Comparison/10000/insert/mutable vector boxed 37415.65
Comparison/10000/insert/mutable vector 6956.86
Comparison/10000/insert (resize)/hashtables basic 1696364.18
Comparison/10000/insert (resize)/vector-hashtables boxed 479122.17
Comparison/10000/insert (resize)/vector-hashtables unboxed keys 422759.56
Comparison/10000/insert (resize)/vector-hashtables 352441.24
Comparison/10000/insert, delete/hashtables basic 1426337.13
Comparison/10000/insert, delete/vector-hashtables 359228.91
Comparison/10000/find/hashtables basic 330890.67
Comparison/10000/find/vector-hashtables 141525.60
Comparison/10000/find/vector-hashtables (frozen) 122542.86
Comparison/10000/lookupIndex/hashtables basic 327065.33
Comparison/10000/lookupIndex/vector-hashtables 142678.55
Comparison/10000/fromList/hashtables basic 1641384.65
Comparison/10000/fromList/vector-hashtables 542530.31
Comparison/10000/toList/hashtables basic 143188.55
Comparison/10000/toList/vector-hashtables 274318.45
Comparison/100000/insert/hashtables basic 10907947.88
Comparison/100000/insert/vector-hashtables boxed 6932748.81
Comparison/100000/insert/vector-hashtables unboxed keys 5307166.72
Comparison/100000/insert/vector-hashtables 2368482.76
Comparison/100000/insert/mutable vector boxed 1794351.95
Comparison/100000/insert/mutable vector 69989.51
Comparison/100000/insert (resize)/hashtables basic 22232168.04
Comparison/100000/insert (resize)/vector-hashtables boxed 11420001.24
Comparison/100000/insert (resize)/vector-hashtables unboxed keys 9496935.97
Comparison/100000/insert (resize)/vector-hashtables 5988321.89
Comparison/100000/insert, delete/hashtables basic 15119684.92
Comparison/100000/insert, delete/vector-hashtables 4058662.48
Comparison/100000/find/hashtables basic 3473800.70
Comparison/100000/find/vector-hashtables 1431873.00
Comparison/100000/find/vector-hashtables (frozen) 1225155.68
Comparison/100000/lookupIndex/hashtables basic 3235041.49
Comparison/100000/lookupIndex/vector-hashtables 1439338.81
Comparison/100000/fromList/hashtables basic 22917643.59
Comparison/100000/fromList/vector-hashtables 8603353.43
Comparison/100000/toList/hashtables basic 5336633.37
Comparison/100000/toList/vector-hashtables 9377042.71
Comparison/1000000/insert/hashtables basic 109193301.77
Comparison/1000000/insert/vector-hashtables boxed 77176586.83
Comparison/1000000/insert/vector-hashtables unboxed keys 59037764.29
Comparison/1000000/insert/vector-hashtables 28535981.51
Comparison/1000000/insert/mutable vector boxed 29709444.79
Comparison/1000000/insert/mutable vector 866220.55
Comparison/1000000/insert (resize)/hashtables basic 260585504.79
Comparison/1000000/insert (resize)/vector-hashtables boxed 127608418.79
Comparison/1000000/insert (resize)/vector-hashtables unboxed keys 96059752.01
Comparison/1000000/insert (resize)/vector-hashtables 57038345.24
Comparison/1000000/insert, delete/hashtables basic 153182769.34
Comparison/1000000/insert, delete/vector-hashtables 47664402.90
Comparison/1000000/find/hashtables basic 35821229.20
Comparison/1000000/find/vector-hashtables 15711648.56
Comparison/1000000/find/vector-hashtables (frozen) 12885372.25
Comparison/1000000/lookupIndex/hashtables basic 32210529.62
Comparison/1000000/lookupIndex/vector-hashtables 14911308.87
Comparison/1000000/fromList/hashtables basic 446988819.28
Comparison/1000000/fromList/vector-hashtables 92793579.75
Comparison/1000000/toList/hashtables basic 66679253.65
Comparison/1000000/toList/vector-hashtables 105470198.31