Unboxed sum performance surprisingly poor
I tried performing worker-wrapper manually on Data.IntMap.lookup:
lookup# :: Int -> IntMap a -> (# (# #) | a #)
lookup# = -- The obvious modification of the current implementation
lookup :: Int -> IntMap a -> Maybe a
lookup k m = case lookup# k m of
(# | a #) -> Just a
_ -> Nothing
Unfortunately, the lookup benchmark slowed down. I verified that the benchmark indeed performs an immediate case analysis on the result (with fromMaybe), so it should go faster. And yet it goes slower.
Caveat: I have not yet gotten things set up to be able to check with 8.4, so if there have been improvements in UnboxedSum performance since 8.2.2, this may all be silly.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.2.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |