Hashtables: 'Basic' hashtables performance quirks on Win64

kyra kyrab at mail.ru
Sat Jan 18 09:38:34 UTC 2014

Having built Agda on 64-bit GHC 7.6.3 on Windows I've stumbled on Agda 
being unbearable slow (I tried it on Penryn and Sandy Bridge computers). 
The culprit turned out to be Agda uses 'BasicHashTable' in 
src/full/Agda/TypeChecking/Serialise.hs (line 98).

Switching either to Cuckoo or Linear immediately cures the problem.

The problem does not manifest itself on 32-bit Windows build or any 
Linux build.

Also 'Basic' hashtable perform better than Cuckoo and Linear in standard 
benchmarks on Win64. And at the same time in Agda scenario it's 
performance degrades by a *couple of orders of magnitude*!

Thus, *all* things are important here: 64-bit, Windows, Agda use case.

I wonder what stands behind this behaviour? What are specifics of 
'Basic' hashtable implementation and how to fix this or should this be 
fixed at all?


More information about the Libraries mailing list