
On Thu, Aug 19, 2010 at 6:52 PM, Ian Lynagh
On Thu, Aug 19, 2010 at 11:38:10AM +0200, Johan Tibell wrote:
I tried doing the "standard" worker/wrapper transform to some functions
in
Data.Map. For example, by transforming
insertWithKey' f kx x t0 = case t of
to
insertWithKey' f kx x t0 = kx `seq` go t0 where go t = case t of
I got a 16% speedup on this benchmark:
Looks like as well as W/W you've also made it strict in the key, so this speedup isn't all W/W.
Right. Like Milan did in his work on containers I made the function key strict. This doesn't really make a difference in practice as far as semantics go as the function is already key strict iff the map isn't empty. I'll make a libraries proposal with the code changes so people can decide if this is something we want. Note: Most of the speedup comes from W/W though. -- Johan