)]}'
{
  "commit": "a6af641b89d6fbfdaaa74406a3d1354d24c58393",
  "tree": "07600c69aa4a3d1ae08e219121b0142b5b19390b",
  "parents": [
    "f9e5d39c4c86bffe6721bfbba887fd1f40805b15"
  ],
  "author": {
    "name": "Louis Dionne",
    "email": "ldionne.2@gmail.com",
    "time": "Tue Sep 09 10:52:44 2025 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 09 10:52:44 2025 -0400"
  },
  "message": "[libc++] Update utilities to compare benchmarks (#157556)\n\nThis patch replaces the previous `libcxx-compare-benchmarks` wrapper by\na new `compare-benchmarks` script which works with LNT-compatible data.\nThis allows comparing benchmark results across libc++ microbenchmarks,\nSPEC, and anything else that would produce LNT-compatible data.\n\nIt also adds a simple script to consolidate LNT benchmark output into a\nsingle file, simplifying the process of doing A/B runs locally. The\nsimplest way to do this doesn\u0027t require creating two build directories\nafter this patch anymore.\n\nIt also adds the ability to produce either a standalone HTML chart or a\nplain text output for diffing results locally when prototyping changes.\nExample text output of the new tool:\n\n```\nBenchmark                              Baseline    Candidate    Difference    % Difference\n-----------------------------------  ----------  -----------  ------------  --------------\nBM_join_view_deques/0                      8.11         8.16          0.05            0.63\nBM_join_view_deques/1                     13.56        13.79          0.23            1.69\nBM_join_view_deques/1024                6606.51      7011.34        404.83            6.13\nBM_join_view_deques/2                     17.99        19.92          1.93           10.72\nBM_join_view_deques/4000               27655.58     29864.72       2209.14            7.99\nBM_join_view_deques/4096               26218.07     30520.13       4302.05           16.41\nBM_join_view_deques/512                 3231.66      2832.47       -399.19          -12.35\nBM_join_view_deques/5500               47144.82     42207.41      -4937.42          -10.47\nBM_join_view_deques/64                   247.23       262.66         15.43            6.24\nBM_join_view_deques/64000             756221.63    511247.48    -244974.15          -32.39\nBM_join_view_deques/65536             537110.91    560241.61      23130.70            4.31\nBM_join_view_deques/70000             815739.07    616181.34    -199557.73          -24.46\nBM_join_view_out_vectors/0                 0.93         0.93          0.00            0.07\nBM_join_view_out_vectors/1                 3.11         3.14          0.03            0.82\nBM_join_view_out_vectors/1024           3090.92      3563.29        472.37           15.28\nBM_join_view_out_vectors/2                 5.52         5.56          0.04            0.64\nBM_join_view_out_vectors/4000           9887.21      9774.40       -112.82           -1.14\nBM_join_view_out_vectors/4096          10158.78     10190.44         31.66            0.31\nBM_join_view_out_vectors/512            1218.68      1209.59         -9.09           -0.75\nBM_join_view_out_vectors/5500          13559.23     13676.06        116.84            0.86\nBM_join_view_out_vectors/64              158.95       157.91         -1.04           -0.65\nBM_join_view_out_vectors/64000        178514.73    226520.97      48006.24           26.89\nBM_join_view_out_vectors/65536        184639.37    207180.35      22540.98           12.21\nBM_join_view_out_vectors/70000        235006.69    213886.93     -21119.77           -8.99\n```",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "56cf4aca236f95f41bedb32356294477a4d06ad8",
      "old_mode": 33188,
      "old_path": "libcxx/docs/TestingLibcxx.rst",
      "new_id": "44463385b81a74ffca7d0629d92688b2092cc40f",
      "new_mode": 33188,
      "new_path": "libcxx/docs/TestingLibcxx.rst"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9bda5f1a279499281882f6b9b278aafaebfaa279",
      "new_mode": 33261,
      "new_path": "libcxx/utils/compare-benchmarks"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c84607f1991c115f20f57a2017a0f63052ccdcfc",
      "new_mode": 33261,
      "new_path": "libcxx/utils/consolidate-benchmarks"
    },
    {
      "type": "delete",
      "old_id": "7f743c32caf40366ecfdba8096615f10d75a22c1",
      "old_mode": 33261,
      "old_path": "libcxx/utils/libcxx-benchmark-json",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "08c53b2420c8eb0bbae548c4bf36636999188e22",
      "old_mode": 33261,
      "old_path": "libcxx/utils/libcxx-compare-benchmarks",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "de6e123eec54ae9fa058491d72c5d52d9cedf2ba",
      "new_mode": 33188,
      "new_path": "libcxx/utils/requirements.txt"
    }
  ]
}
