[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