[GHC] #12545: Compilation time/space regression in GHC 8.0/8.1 (search in type-level lists and -O)

GHC ghc-devs at haskell.org
Fri Aug 26 19:40:56 UTC 2016


#12545: Compilation time/space regression in GHC 8.0/8.1 (search in type-level
lists and -O)
-------------------------------------+-------------------------------------
           Reporter:                 |             Owner:
  mikhail.vorozhtsov                 |
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:  Compiler       |           Version:  8.0.1
           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):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 After upgrading to GHC 8.0.1 I've noticed that compilation time of one of
 my libraries got unacceptably long. Please find the attached test case.
 Here are some numbers from my machine:

 {{{
 $ time ~/Prefixes/ghc-7.10.3/bin/ghc -O -c -Rghc-timing TypeList.hs
 Regression.hs
 <<ghc: 19103924976 bytes, 1441 GCs, 73048470/256579104 avg/max bytes
 residency (18 samples), 542M in use, 0.000 INIT (0.002 elapsed), 14.163
 MUT (14.257 elapsed), 5.707 GC (5.830 elapsed) :ghc>>

 real    0m20.160s
 user    0m19.937s
 sys     0m0.197s
 $ time ~/Prefixes/ghc-8.0.1/bin/ghc -O -c -Rghc-timing TypeList.hs
 Regression.hs
 <<ghc: 147662211104 bytes, 9635 GCs, 190336418/433097448 avg/max bytes
 residency (38 samples), 1210M in use, 0.000 INIT (0.001 elapsed), 101.707
 MUT (101.840 elapsed), 27.907 GC (28.259 elapsed) :ghc>>

 real    2m10.195s
 user    2m9.773s
 sys     0m0.400s
 }}}

 Both versions are the official Debian 8 x86_64 binaries from haskell.org.
 I also compiled the git master and unfortunately it is affected as well.

 It is worth mentioning that turning off optimization makes the problem
 disappear:
 {{{
 $ time ~/Prefixes/ghc-8.0.1/bin/ghc -O0 -c -Rghc-timing TypeList.hs
 Regression.hs
 <<ghc: 3779057184 bytes, 225 GCs, 17923355/81566792 avg/max bytes
 residency (8 samples), 164M in use, 0.000 INIT (0.001 elapsed), 2.847 MUT
 (2.941 elapsed), 0.553 GC (0.572 elapsed) :ghc>>

 real    0m3.593s
 user    0m3.507s
 sys     0m0.073s
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12545>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list