[GHC] #7105: Better names for derived SCCs of instances

GHC ghc-devs at haskell.org
Wed Jun 8 13:32:29 UTC 2016


#7105: Better names for derived SCCs of instances
-------------------------------------+-------------------------------------
        Reporter:  ksf               |                Owner:  simonmar
            Type:  feature request   |               Status:  patch
        Priority:  normal            |            Milestone:
       Component:  Profiling         |              Version:  7.4.2
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #11543            |  Differential Rev(s):  Phab:D2282
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by Ömer Sinan Ağacan <omeragacan@…>):

 In [changeset:"d7933cbc28f4f094eba3d128bc147920f68c965b/ghc"
 d7933cbc/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="d7933cbc28f4f094eba3d128bc147920f68c965b"
 Show sources of cost centers in .prof

 This fixes the problem with duplicate cost-centre names that was
 reported a couple of times before. When a module implements a typeclass
 multiple times for different types, methods of different implementations
 get same cost-centre names and are reported like this:

     COST CENTRE MODULE            %time %alloc

     CAF         GHC.IO.Handle.FD    0.0   32.8
     CAF         GHC.Read            0.0    1.0
     CAF         GHC.IO.Encoding     0.0    1.8
     showsPrec   Main                0.0    1.2
     readPrec    Main                0.0   19.4
     readPrec    Main                0.0   20.5
     main        Main                0.0   20.2

                                             individual      inherited
     COST CENTRE  MODULE  no.     entries  %time %alloc   %time %alloc

     MAIN         MAIN     53          0    0.0    0.2     0.0  100.0
      CAF         Main    105          0    0.0    0.3     0.0   62.5
       readPrec   Main    109          1    0.0    0.6     0.0    0.6
       readPrec   Main    107          1    0.0    0.6     0.0    0.6
       main       Main    106          1    0.0   20.2     0.0   61.0
        ==        Main    114          1    0.0    0.0     0.0    0.0
        ==        Main    113          1    0.0    0.0     0.0    0.0
        showsPrec Main    112          2    0.0    1.2     0.0    1.2
        showsPrec Main    111          2    0.0    0.9     0.0    0.9
        readPrec  Main    110          0    0.0   18.8     0.0   18.8
        readPrec  Main    108          0    0.0   19.9     0.0   19.9

 It's not possible to tell from the report which `==` took how long. This
 patch adds one more column at the cost of making outputs wider. The
 report now looks like this:

     COST CENTRE MODULE           SRC                       %time %alloc

     CAF         GHC.IO.Handle.FD <entire-module>             0.0   32.9
     CAF         GHC.IO.Encoding  <entire-module>             0.0    1.8
     CAF         GHC.Read         <entire-module>             0.0    1.0
     showsPrec   Main             Main_1.hs:7:19-22           0.0    1.2
     readPrec    Main             Main_1.hs:7:13-16           0.0   19.5
     readPrec    Main             Main_1.hs:4:13-16           0.0   20.5
     main        Main             Main_1.hs:(10,1)-(20,20)    0.0   20.2

 individual      inherited
     COST CENTRE  MODULE        SRC                      no. entries  %time
 %alloc   %time %alloc

     MAIN         MAIN          <built-in>                53      0    0.0
 0.2     0.0  100.0
      CAF         Main          <entire-module>          105      0    0.0
 0.3     0.0   62.5
       readPrec   Main          Main_1.hs:7:13-16        109      1    0.0
 0.6     0.0    0.6
       readPrec   Main          Main_1.hs:4:13-16        107      1    0.0
 0.6     0.0    0.6
       main       Main          Main_1.hs:(10,1)-(20,20) 106      1    0.0
 20.2     0.0   61.0
        ==        Main          Main_1.hs:7:25-26        114      1    0.0
 0.0     0.0    0.0
        ==        Main          Main_1.hs:4:25-26        113      1    0.0
 0.0     0.0    0.0
        showsPrec Main          Main_1.hs:7:19-22        112      2    0.0
 1.2     0.0    1.2
        showsPrec Main          Main_1.hs:4:19-22        111      2    0.0
 0.9     0.0    0.9
        readPrec  Main          Main_1.hs:7:13-16        110      0    0.0
 18.8     0.0   18.8
        readPrec  Main          Main_1.hs:4:13-16        108      0    0.0
 19.9     0.0   19.9
      CAF         Text.Read.Lex <entire-module>          102      0    0.0
 0.5     0.0    0.5

 To fix failing test cases because of different orderings of cost centres
 (e.g. optimized and non-optimized build printing in different order),
 with this patch we also start sorting cost centres before printing. The
 order depends on 1) entries (more entered cost centres come first) 2)
 names (using strcmp() on cost centre names).

 Reviewers: simonmar, austin, erikd, bgamari

 Reviewed By: simonmar, bgamari

 Subscribers: thomie

 Differential Revision: https://phabricator.haskell.org/D2282

 GHC Trac Issues: #11543, #8473, #7105
 }}}

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


More information about the ghc-tickets mailing list