[PATCH] D41915: [lldCOFF] Print detailed timing information with /VERBOSE

Zachary Turner via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 10 17:41:28 PST 2018


I missed the rest of the suggestions from ruiu@, will need to implement
those tomorrow
On Wed, Jan 10, 2018 at 5:24 PM Zachary Turner via Phabricator <
reviews at reviews.llvm.org> wrote:

> zturner updated this revision to Diff 129375.
> zturner added a comment.
> Herald added a subscriber: mgorny.
>
> I went to start implementing peter's suggestion, and things started
> getting a little interesting.  A lot of the things you might want to time
> are behind command line options, and it would be nice if we didn't show
> anything when the lines weren't relevant.
>
> At the same time, I don't like writing code and then having someone
> re-invent the same thing later that is slightly different.  So although
> nobody's using this now, I wanted to do this in a way that could benefit,
> for example, the ELF linker or the MachO linker at some point in the future.
>
> So I tried to generalize this a little bit.  Everything is moved into
> Common now, and the only thing defined in COFF is a set of enums that
> represent the various statistics that you might want to time.  You can add
> phases dynamically (for example, only if an option is set on the command
> line), and all the printing logic is raised up into common too, and it does
> all the work of figuring out the right set of statistics you're timing,
> calculating percentages, etc, so nobody else has to deal with the
> formatting and alignment again.
>
> just to illustrate what I mean, currently when I link with /OPT:REF +
> /OPT:ICF + /DEBUG I get this:
>
>     Input File Reading:        (  3.54%)   576 ms
>     ICF:                       (  0.66%)   107 ms
>     GC:                        (  1.34%)   218 ms
>     Code Layout:               (  0.79%)   128 ms
>     Commit Output File:        (  0.07%)    11 ms
>     PDB Emission (Cumulative): ( 93.46%) 15214 ms
>       Globals Stream Layout:   (  1.09%)   177 ms
>       TPI Stream Layout:       (  6.71%)  1093 ms
>       Type Merging:            ( 35.43%)  5767 ms
>       Symbol Merging:          ( 24.43%)  3977 ms
>       Commit to Disk:          ( 17.90%)  2913 ms
>   ------------------------------------------------
>   Total Link Time:             (100.00%) 16278 ms
>
> whereas if I link with only /OPT:ICF and /OPT:REF but remove /DEBUG I get
> this:
>
>     Input File Reading: ( 54.80%) 542 ms
>     ICF:                ( 11.93%) 118 ms
>     GC:                 ( 16.38%) 162 ms
>     Code Layout:        ( 13.14%) 130 ms
>     Commit Output File: (  1.31%)  13 ms
>   ---------------------------------------
>   Total Link Time:      (100.00%) 989 ms
>
> I think this is a more friendly output and more useful from a usability
> perspective.  But if I went a little overboard let me know :)
>
>
> https://reviews.llvm.org/D41915
>
> Files:
>   lld/COFF/Config.h
>   lld/COFF/Driver.cpp
>   lld/COFF/ICF.cpp
>   lld/COFF/MarkLive.cpp
>   lld/COFF/Options.td
>   lld/COFF/PDB.cpp
>   lld/COFF/PDB.h
>   lld/COFF/Timing.h
>   lld/COFF/Writer.cpp
>   lld/COFF/Writer.h
>   lld/Common/CMakeLists.txt
>   lld/Common/LinkTimer.cpp
>   lld/include/lld/Common/LinkTimer.h
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180111/b44e81fc/attachment.html>


More information about the llvm-commits mailing list