D hash table comparison benchmark
Nathan S.
no.public.email at example.com
Tue Jun 26 02:41:45 UTC 2018
The below benchmarks come from writing 100 int-to-int mappings to
a new hashtable then reading them back, repeated 10_000 times.
The built-in AA doesn't deallocate memory when it falls out of
scope but the other maps do. Benchmark code in next post.
== Speed Ranking using LDC2 (optimized) ==
21 msecs vibe.utils.hashmap
37 msecs memutils.hashmap
57 msecs built-in AA
102 msecs jive.map
185 msecs containers.hashmap w/GCAllocator
240 msecs containers.hashmap w/Mallocator
== Speed Ranking using DMD (optimized) ==
55 msecs memutils.hashmap
64 msecs vibe.utils.hashmap
80 msecs built-in AA
131 msecs jive.map
315 msecs containers.hashmap w/GCAllocator
361 msecs containers.hashmap w/Mallocator
** What if the array size is smaller or larger? The ordering
didn't change so I won't post the results. **
** What if we reuse the hashtable? **
== Speed Ranking using LDC2 (optimized) ==
10.45 msecs vibe.utils.hashmap
11.85 msecs memutils.hashmap
12.61 msecs containers.hashmap w/GCAllocator
12.91 msecs containers.hashmap w/Mallocator
14.30 msecs built-in AA
19.21 msecs jive.map
== Speed Ranking using DMD (optimized) ==
18.05 msecs memutils.hashmap
21.03 msecs jive.map
24.99 msecs built-in AA
25.22 msecs containers.hashmap w/Mallocator
25.75 msecs containers.hashmap w/GCAllocator
29.93 msecs vibe.utils.hashmap
== Not benchmarked ==
stdx.collections.hashtable (dlang-stdx/collections): compilation
error
kontainer.orderedAssocArray (alphaKAI/kontainer): doesn't accept
int keys
tanya.container.hashtable (caraus-ecms/tanya): either has a bug
or is very slow
More information about the Digitalmars-d
mailing list