Files
clang-p2996/llvm/test/tools/llvm-profdata/sample-profile-json.test
Kazu Hirata a044d0491e [llvm-profdata] Support JSON as as an output-only format
This patch teaches llvm-profdata to output the sample profile in the
JSON format.  The new option is intended to be used for research and
development purposes.  For example, one can write a Python script to
take a JSON file and analyze how similar different inline instances of
a given function are to each other.

I've chosen JSON because Python can parse it reasonably fast, and it
just takes a couple of lines to read the whole data:

  import json
  with open ('profile.json') as f:
    profile = json.load(f)

Differential Revision: https://reviews.llvm.org/D130944
2022-08-09 16:24:53 -07:00

105 lines
2.8 KiB
Plaintext

RUN: llvm-profdata show --sample --json %p/Inputs/sample-profile.proftext | FileCheck %s --check-prefix=JSON
JSON: [
JSON-NEXT: {
JSON-NEXT: "name": "main",
JSON-NEXT: "total": 184019,
JSON-NEXT: "head": 0,
JSON-NEXT: "body": [
JSON-NEXT: {
JSON-NEXT: "line": 4,
JSON-NEXT: "samples": 534
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "line": 4,
JSON-NEXT: "discriminator": 2,
JSON-NEXT: "samples": 534
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "line": 5,
JSON-NEXT: "samples": 1075
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "line": 5,
JSON-NEXT: "discriminator": 1,
JSON-NEXT: "samples": 1075
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "line": 6,
JSON-NEXT: "samples": 2080
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "line": 7,
JSON-NEXT: "samples": 534
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "line": 9,
JSON-NEXT: "samples": 2064,
JSON-NEXT: "calls": [
JSON-NEXT: {
JSON-NEXT: "function": "_Z3bari",
JSON-NEXT: "samples": 1471
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "function": "_Z3fooi",
JSON-NEXT: "samples": 631
JSON-NEXT: }
JSON-NEXT: ]
JSON-NEXT: }
JSON-NEXT: ],
JSON-NEXT: "callsites": [
JSON-NEXT: {
JSON-NEXT: "line": 10,
JSON-NEXT: "samples": [
JSON-NEXT: {
JSON-NEXT: "name": "inline1",
JSON-NEXT: "total": 1000,
JSON-NEXT: "body": [
JSON-NEXT: {
JSON-NEXT: "line": 1,
JSON-NEXT: "samples": 1000
JSON-NEXT: }
JSON-NEXT: ]
JSON-NEXT: }
JSON-NEXT: ]
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "line": 10,
JSON-NEXT: "samples": [
JSON-NEXT: {
JSON-NEXT: "name": "inline2",
JSON-NEXT: "total": 2000,
JSON-NEXT: "body": [
JSON-NEXT: {
JSON-NEXT: "line": 1,
JSON-NEXT: "samples": 2000
JSON-NEXT: }
JSON-NEXT: ]
JSON-NEXT: }
JSON-NEXT: ]
JSON-NEXT: }
JSON-NEXT: ]
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "name": "_Z3bari",
JSON-NEXT: "total": 20301,
JSON-NEXT: "head": 1437,
JSON-NEXT: "body": [
JSON-NEXT: {
JSON-NEXT: "line": 1,
JSON-NEXT: "samples": 1437
JSON-NEXT: }
JSON-NEXT: ]
JSON-NEXT: },
JSON-NEXT: {
JSON-NEXT: "name": "_Z3fooi",
JSON-NEXT: "total": 7711,
JSON-NEXT: "head": 610,
JSON-NEXT: "body": [
JSON-NEXT: {
JSON-NEXT: "line": 1,
JSON-NEXT: "samples": 610
JSON-NEXT: }
JSON-NEXT: ]
JSON-NEXT: }
JSON-NEXT: ]