[commit: ghc] ghc-8.0: Show sources of cost centers in .prof (7fc7538)

git at git.haskell.org git at git.haskell.org
Sun Aug 7 11:59:07 UTC 2016


Repository : ssh://git@git.haskell.org/ghc

On branch  : ghc-8.0
Link       : http://ghc.haskell.org/trac/ghc/changeset/7fc7538fffb9ad4ad2132a8a9ef8cb6543d0b2fc/ghc

>---------------------------------------------------------------

commit 7fc7538fffb9ad4ad2132a8a9ef8cb6543d0b2fc
Author: Ömer Sinan Ağacan <omeragacan at gmail.com>
Date:   Wed Jun 8 09:30:32 2016 -0400

    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
    
    (cherry picked from commit d7933cbc28f4f094eba3d128bc147920f68c965b)


>---------------------------------------------------------------

7fc7538fffb9ad4ad2132a8a9ef8cb6543d0b2fc
 rts/Profiling.c                                    | 133 ++++++++++++++++-----
 testsuite/driver/testlib.py                        |  47 +++++---
 .../tests/profiling/should_run/T2552.prof.sample   |  56 ++++-----
 .../tests/profiling/should_run/T5559.prof.sample   |  33 +++--
 .../profiling/should_run/T5654b-O0.prof.sample     |  40 +++----
 .../profiling/should_run/T5654b-O1.prof.sample     |  40 +++----
 .../tests/profiling/should_run/T680.prof.sample    |  65 +++++-----
 testsuite/tests/profiling/should_run/all.T         |   6 +-
 .../tests/profiling/should_run/ioprof.prof.sample  |  74 ++++++------
 .../profiling/should_run/prof-doc-fib.prof.sample  |  41 +++----
 .../profiling/should_run/prof-doc-last.prof.sample |  54 ++++-----
 .../profiling/should_run/profinline001.prof.sample |  39 +++---
 .../tests/profiling/should_run/scc001.prof.sample  |  48 ++++----
 .../tests/profiling/should_run/scc002.prof.sample  |  45 +++----
 .../tests/profiling/should_run/scc003.prof.sample  |  54 ++++-----
 .../tests/profiling/should_run/scc005.prof.sample  |  35 +++---
 16 files changed, 456 insertions(+), 354 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 7fc7538fffb9ad4ad2132a8a9ef8cb6543d0b2fc


More information about the ghc-commits mailing list