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


_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to