On Nov 9, 2005, at 4:46 AM, Ketil Malde wrote:
Sebastian Sylvan wrote:
On 11/8/05, Jan-Willem Maessen <[EMAIL PROTECTED]> wrote:
Just wanted to let people know that I've been working on improving
Data.HashTable, with the help of Ketil Malde's badly performing code
Always happy to help, of course - bad performance R us:-)
I think that if I can get unsafeFreeze/unsafeThaw to work reliably,
it'll finally outperform Data.Map on your example. I haven't yet
played with the hash function, which looks kind of bad; there may be
hope for improvement there as well.
Request: Data.HashTable.Immutable
I'm not sure you really want that - do you wish to copy a large
array each time you do an update?
Freezing and thawing might be a good idea, though.
A true read-only hash table, with a freeze for the mutable version,
but NO THAW, could potentially be useful. I seem to recall that hbc
had an immutable hash table (along with a derivable Hashable class),
where the content was specified as in an array comprehension.
User-level Thaw is a bad idea, and I will resist it, even if the
library ends up using Freeze/Thaw internally to work around GC
shortcomings.
HashTable's interface is rather impoverished, compared to Map and
even Array.
Ideally, it should support many of the same operations, and
presumably it could work with the ST monad as well as IO.
It's certainly possible to code many of these up---the cleanest code
I've gotten so far would even make it easy, as everything but lookup
goes through 2 higher-order INLINE functions (a generic insert/delete
and a map/reduce, each on a list of pairs).
But I'm going to focus for the moment on the most pressing need,
which is acceptable performance for what we've got. I hope the
result will make new functionality easier to provide.
-Jan
-k
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe