Hi Bulat, The difference between IntMap and HashTable is not large despite -A10m (without this option HashTable is unusable). HashTable: <<ghc: 2754665792 bytes, 287 GCs, 26495315/147911940 avg/max bytes residency (12 samples), 299M in use, 0.00 INIT (0.00 elapsed), 31.72 MUT (33.78 elapsed), 14.04 GC (17.73 elapsed) :ghc>> IntMap: <<ghc: 2705137096 bytes, 282 GCs, 30775754/176806684 avg/max bytes residency (12 samples), 356M in use, 0.00 INIT (0.01 elapsed), 30.35 MUT (31.28 elapsed), 13.64 GC (14.52 elapsed) :ghc>> I must admit, though, that my hash function may be bad: data EqKey = EqKey (StableName ()) TypeRep deriving Eq hashKey :: EqKey -> Int32 hashKey (EqKey p t) = HTab.hashInt (hashStableName p) and calling "HashTable.new (==) hashKey". (Adding hashString on show <TypeRep> is worse.) A hash-function for TypeReps would be better. But my IntMap also uses Eq on EqKey ("IntMap [(EqKey, Int)]") Cheers Christian Bulat Ziganshin wrote:
Hello Christian,
Wednesday, January 11, 2006, 5:13:25 PM, you wrote:
CM> It turned out that the IntMap was not slower than the HashTable (What is CM> HashTable good for, then? Why is it so slow?)
see the http://cvs.haskell.org/trac/ghc/ticket/650
and the attached letter. "-A10m" should help in this case