[GHC] #11095: -O0 -g slows GHC down on list literals (compared to -O0 without -g)
GHC
ghc-devs at haskell.org
Thu Jan 26 05:29:02 UTC 2017
#11095: -O0 -g slows GHC down on list literals (compared to -O0 without -g)
-------------------------------------+-------------------------------------
Reporter: slyfox | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.2
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s): phab:D3001
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by dfeuer):
It appears that a big problem here is in `wrapTicks` in
`coreSyn/CorePrep.hs`. In particular, tracing its `go` function like this
{{{#!hs
go (FloatTick t) (fs, e) = ASSERT(tickishPlace t == PlaceNonLam)
pprTrace "mapOL called with" (text "t =
" <+> ppr t $$ text "fs = " <+> ppr fs) (mapOL (wrap t) fs, mkTick t e)
go other (fs, e) = (other `consOL` fs, e)
}}}
produces a huge amount of output, showing that the `fs` get deeper and
deeper, layering tick on tick on tick at least quadratically. See
[http://lpaste.net/2018094287874424832 this paste]. Every step in the fold
calls `mapOL (wrap t)` on the (growing) accumulator list. I wonder if it
might be possible to find a way to combine these ticks, or drop some of
them, instead of layering them arbitrarily deeply. I don't know how many
we need.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11095#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list