[GHC] #9400: poor performance when compiling modules with many Text literals at -O1
GHC
ghc-devs at haskell.org
Mon Aug 4 13:48:02 UTC 2014
#9400: poor performance when compiling modules with many Text literals at -O1
-------------------------------------+-------------------------------------
Reporter: rwbarton | Owner:
Type: bug | Status: closed
Priority: normal | Milestone:
Component: Compiler | Version: 7.8.3
Resolution: invalid | Keywords:
Operating System: | Architecture: Unknown/Multiple
Unknown/Multiple | Difficulty: Unknown
Type of failure: Compile- | Blocked By:
time performance bug | Related Tickets: #9370
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
Just to add a bit more detail:
* The special handling for singleton string literals is in
`MkCore.mkStringExprFS`. Omittign the `lengthFS str == 1` case looks very
plausible to me.
* Notice that this same function sometimes generates `unpackCStringUtf8`
rather than `unpackCString`. Rules that recognise only the latter will
stumble if the former is produced. I have no clue what to do about this --
Unicode experts may.
* The function `CoreSubst.exprIsConApp_maybe` is the place where we say
"does this expression look like a constructor application?". Adding an
extra case to `go`, below the ones for `dataConWorkId` and
`DFunFunfolding` should let us dynamically expand a call to
`unpackCString` into a cons cell. And that will actually be ''better''
than now, because it should eliminate
{{{
case "foo" of
'f' : 'o' : xs -> ....
}}}
Would someone care to try?
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9400#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list