This is an archive of the discontinued LLVM Phabricator instance.

Add JSON output option to llvm-remark-size-diff
ClosedPublic

Authored by paquette on Mar 7 2022, 3:58 PM.

Details

Summary

This adds JSON output to llvm-remark-size-diff.

The goal here is to make it easy for external tools to consume output from llvm-remark-size-diff. These tools could be used for automated size analysis. (E.g. in CI).

To specify JSON output, use --report_style=json. JSON output can be pretty-printed via --pretty.

With automation in mind, the schema looks like this:

"Files": {
    "A": <filename_a>
    "B": <filename_b>
},

"InBoth": [
    {
    "FunctionName": <function name>,
    "InstCount": [
        <count_in_a>,
        <count_in_b>
        ],
    "StackSize": [
        <count_in_a>,
        <count_in_b>
        ]
    },
    ...
]

"OnlyInA": [
    {
    "FunctionName": <function name>,
    "InstCount": [
        <count_in_a>,
        0
        ],
    "StackSize": [
        <count_in_a>,
        0
        ]
    },
    ...
]

"OnlyInB": [
    {
    "FunctionName": <function name>,
    "InstCount": [
        0,
        <count_in_b>
        ],
    "StackSize": [
        0,
        <count_in_b>
        ]
    },
    ...
]

A few notes:

  • Filenames are included, because tools may want to combine many outputs together in some way (a big JSON file, a big CSV, or something.)
  • Counts are represented as [a, b] so that a diff can be calculated via b - a. The original counts may be useful for size analysis (e.g. was this function extremely large before?) and so both are preserved.
  • OnlyInA and OnlyInB have a 0 for one of the counts always. This is to make it easier for tools to share code between OnlyInA, OnlyInB, and InBoth.

Diff Detail

Event Timeline

paquette created this revision.Mar 7 2022, 3:58 PM
Herald added a project: Restricted Project. · View Herald TranscriptMar 7 2022, 3:58 PM
paquette requested review of this revision.Mar 7 2022, 3:58 PM
Herald added a project: Restricted Project. · View Herald TranscriptMar 7 2022, 3:58 PM
echristo accepted this revision.Mar 7 2022, 4:23 PM
echristo added a subscriber: echristo.

LGTM, one nit :)

llvm/tools/llvm-remark-size-diff/RemarkSizeDiff.cpp
483

:)

This revision is now accepted and ready to land.Mar 7 2022, 4:23 PM
paquette added inline comments.Mar 7 2022, 4:45 PM
llvm/tools/llvm-remark-size-diff/RemarkSizeDiff.cpp
483

My brain is really small today, but I'm going to guess that this should be a switch

This revision was landed with ongoing or failed builds.Mar 7 2022, 4:54 PM
This revision was automatically updated to reflect the committed changes.