[GHC] #10788: performance regression involving minimum
GHC
ghc-devs at haskell.org
Mon Sep 7 09:29:43 UTC 2015
#10788: performance regression involving minimum
-------------------------------------+-------------------------------------
Reporter: rwbarton | Owner: ekmett
Type: bug | Status: new
Priority: normal | Milestone:
Component: Core Libraries | Version: 7.10.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Runtime | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by nomeata):
> In this particular case, I am quite happy with the
INLINEABLE/SPECIALIZE solution, and will submit a DR soon.
Spoke too soon. Looking at the core of `List`, the `maximum` for `Int` is
great (worker with a strict unboxed `Int`), but for `Integer`, the
strictness analyzer is failing me, and I get this loop:
{{{#!hs
Rec {
-- RHS size: {terms: 12, types: 8, coercions: 0}
maximum_go [Occ=LoopBreaker] :: [Integer] -> Integer -> Integer
[GblId, Arity=2, Caf=NoCafRefs, Str=DmdType <S,1*U><S,U>]
maximum_go =
\ (ds_a2d4 :: [Integer]) (eta_B1 :: Integer) ->
case ds_a2d4 of _ [Occ=Dead] {
[] -> eta_B1;
: y_a2d9 ys_a2da ->
maximum_go
ys_a2da
(integer-gmp-1.0.0.0:GHC.Integer.Type.$fOrdInteger_$cmax
eta_B1 y_a2d9)
}
end Rec }
}}}
So it sees that `go` is strict in its second argument. Why is it then not
strictly evaluated before the recursive call, avoiding this obvious space
leak?
Note that `max` is not inlined (as it is for Int), but the strictness data
is there, so that should not make a difference.
Anyways, I guess this discussion is derailing for this particular ticket.
I’ll look into a combination of rewriting with `RULES` to `strictMinimum`
to avoid relying on the strictness analyzer to produce good code.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10788#comment:10>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list