[all-commits] [llvm/llvm-project] 355ad3: Add JSON output option to llvm-remark-size-diff

Jessica Paquette via All-commits all-commits at lists.llvm.org
Mon Mar 7 16:54:32 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 355ad3a3cdb36fd3207b53d62775b9d8d28413f4
      https://github.com/llvm/llvm-project/commit/355ad3a3cdb36fd3207b53d62775b9d8d28413f4
  Author: Jessica Paquette <jpaquette at apple.com>
  Date:   2022-03-07 (Mon, 07 Mar 2022)

  Changed paths:
    A llvm/test/tools/llvm-remark-size-diff/json-add-remove-func.test
    A llvm/test/tools/llvm-remark-size-diff/json-increase-decrease-inst-count.test
    A llvm/test/tools/llvm-remark-size-diff/json-no-difference.test
    M llvm/tools/llvm-remark-size-diff/RemarkSizeDiff.cpp

  Log Message:
  -----------
  Add JSON output option to llvm-remark-size-diff

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`.

Differential Revision: https://reviews.llvm.org/D121173




More information about the All-commits mailing list