[GHC] #14519: Exponential runtime performance regression in GHC 8.2 + Data.Text.Lazy + Text.RE.TDFA

GHC ghc-devs at haskell.org
Thu Jan 11 13:23:55 UTC 2018


#14519: Exponential runtime performance regression in GHC 8.2 + Data.Text.Lazy +
Text.RE.TDFA
-------------------------------------+-------------------------------------
        Reporter:  ntc2              |                Owner:  tdammers
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.4.1
       Component:  Compiler          |              Version:  8.2.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  Runtime           |            Test Case:
  performance bug                    |  https://github.com/ntc2/ghc-8.2.1
                                     |  -regex-lazy-text-
                                     |  bug/tree/07b7bb32c6e90e8f2d2eada4b59943f37e632d53
      Blocked By:                    |             Blocking:
 Related Tickets:  #13745, #14564    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by simonpj):

 Interesting.  I was thinking of this part of the ticky file
 {{{
     Entries      Alloc    Alloc'd  Non-void Arguments      STG Name
 --------------------------------------------------------------------------------
     1800047   78722320          0   1 L                    p_term{v raIX}
 (main:Main) (fun)
     2160065   50401232          0   2 >L
 base:GHC.List.takeWhile{v rcW} (fun)
     1509183   43941968          0   2 LL
 base:GHC.Base.++{v 03} (fun)
     1086514   43446320          0   2 LL
 base:GHC.List.zip{v 0x} (fun)
     1088129   37257616          0   2 >L
 base:GHC.Base.map{v 01X} (fun)
      480015   24961008          0   1 L                    p2{v raIU}
 (main:Main) (fun)
      240001   19200080          0   2 ML                   $w$j{v raIV}
 (main:Main) (fun,se)
      665502   17440560          0   2 iL                   go1{v raJb}
 (main:Main) (fun)
      545117   17421624          0   1 M                    subterms{v
 r1ki} (main:Main) (fun)
      723688   15430288          0   3 LMM                  $wmatch'{v
 raJ5} (main:Main) (fun)
      662950   15428096          0   3 MML                  $sfind'{v raIM}
 (main:Main) (fun)
      363373   12627992          0   1 L                    go11{v saSX}
 (main:Main) (fun) in raJb
      487124   11666944          0   3 >>M                  expr_fold{v
 r1jH} (main:Main) (fun)
     1267348   11605760          0   2 LM                   find'{v raIN}
 (main:Main) (fun)
 }}}
 Usually when something exponential is going on you get some very bug
 numbers at the top.  (You may need to sort first.)

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


More information about the ghc-tickets mailing list