[GHC] #7450: Regression in optimisation time of functions with many patterns (6.12 to 7.4)?

GHC ghc-devs at haskell.org
Mon Jun 29 20:52:27 UTC 2015


#7450: Regression in optimisation time of functions with many patterns (6.12 to
7.4)?
-------------------------------------+-------------------------------------
        Reporter:  iustin            |                   Owner:  bgamari
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:  7.12.1
       Component:  Compiler          |                 Version:  7.6.1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:  Phab:D1012
-------------------------------------+-------------------------------------

Comment (by bgamari):

 Phab:D1012 appears to give a moderate improvement in compile time in this
 case. Take, for instance, a 1000-constructor testcase,
 {{{#!hs
 module Mod(F(..)) where
 data F
   = F0 { fldF0 :: ()}
   | F1 { fldF1 :: ()}
   ...
   | F1023 {fldF1023 :: ()}
   deriving (Read)
 }}}

 With 7.11 prior to the change `ghc -O` runs for about 140 seconds. After
 the change it runs for about 100 seconds. Moreover, one sees a substantial
 reduction in heap allocations. The previously non-linear performance
 degradation can be seen in the table below.

 ||= Number of constructors =||||||= allocated (MBytes) =||||||= time
 (seconds) =||
 ||= n =||= Pre-D1012 =||= Post-D1012 =||= Delta (%) =||= Post-D1012 =||=
 Post-D1012 =||= Delta (%) =||
 || 16|| 1.75 ± 0.03 || 1.69 ± 0.02 || -3%|| 1484.58 ± 0.75 || 1470.53 ±
 0.77 || -1%||
 || 64|| 6.62 ± 0.25 || 5.96 ± 0.06 || -10%|| 5466.96 ± 1.53 || 5248.22 ±
 1.64 || -4%||
 || 128|| 13.33 ± 0.82 || 12.00 ± 0.63 || -10%|| 11282.75 ± 1.55 ||
 10406.51 ± 1.99 || -8%||
 || 256|| 26.68 ± 0.53 || 23.69 ± 0.81 || -11%|| 24680.84 ± 2.32 ||
 21137.36 ± 2.36 || -14%||
 || 512|| 67.61 ± 2.69 || 47.99 ± 0.67 || -29%|| 58628.48 ± 30.32 ||
 44412.63 ± 0.36 || -24%||
 || 1024|| 144.91 ± 4.07 || 102.19 ± 0.60 || -29%|| 156753.21 ± 374.40 ||
 99523.84 ± 121.99 || -37%||
 || 2048|| 379.93 ± 6.77 || 236.63 ± 3.51 || -38%|| 478481.02 ± 287.23 ||
 248791.64 ± 233.84 || -48%||
 || 4096|| 1379.47 ± 0.00 || 650.83 ± 5.65 || -53%|| 1690084.72 ± 0.00 ||
 759242.66 ± 42.84 || -55%||

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


More information about the ghc-tickets mailing list