)]}'
{
  "commit": "cbbf303ff51b61315f82b0f87bb52db2bedf2b78",
  "tree": "792309a9f79daeb044238721711aab1020454a9d",
  "parents": [
    "b9e33fd49386a4be569e7d579c24e0e2a9607943"
  ],
  "author": {
    "name": "Nikolas Klauser",
    "email": "nikolasklauser@berlin.de",
    "time": "Fri Aug 15 08:57:33 2025 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Aug 15 08:57:33 2025 +0200"
  },
  "message": "[libc++] Optimize __hash_table copy constructors and assignment (#151951)\n\n```\n----------------------------------------------------------------------------------------------------------------------\nBenchmark                                                                                             old          new\n----------------------------------------------------------------------------------------------------------------------\nstd::unordered_set\u003cint\u003e::ctor(const\u0026)/0                                                           15.4 ns      14.6 ns\nstd::unordered_set\u003cint\u003e::ctor(const\u0026)/32                                                           686 ns       322 ns\nstd::unordered_set\u003cint\u003e::ctor(const\u0026)/1024                                                       35839 ns     21490 ns\nstd::unordered_set\u003cint\u003e::ctor(const\u0026)/8192                                                      385790 ns    280270 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into cleared Container)/0                             15.1 ns      15.9 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into cleared Container)/32                            1077 ns       333 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into cleared Container)/1024                         31296 ns      9984 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into cleared Container)/8192                        266776 ns    109418 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into partially populated Container)/0                 15.1 ns      16.3 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into partially populated Container)/32                 962 ns       320 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into partially populated Container)/1024             31713 ns     10128 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into partially populated Container)/8192            266113 ns    108525 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into populated Container)/0                          0.990 ns      2.03 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into populated Container)/32                           963 ns       263 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into populated Container)/1024                       27600 ns      7793 ns\nstd::unordered_set\u003cint\u003e::operator\u003d(const\u0026) (into populated Container)/8192                      235295 ns     66248 ns\nstd::unordered_set\u003cstd::string\u003e::ctor(const\u0026)/0                                                   16.0 ns      15.0 ns\nstd::unordered_set\u003cstd::string\u003e::ctor(const\u0026)/32                                                  2950 ns      1277 ns\nstd::unordered_set\u003cstd::string\u003e::ctor(const\u0026)/1024                                              246935 ns     73762 ns\nstd::unordered_set\u003cstd::string\u003e::ctor(const\u0026)/8192                                             3310895 ns   2468608 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into cleared Container)/0                     16.1 ns      15.8 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into cleared Container)/32                    5856 ns      1039 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into cleared Container)/1024                170436 ns     74836 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into cleared Container)/8192               1574235 ns   1096891 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into partially populated Container)/0         16.0 ns      16.3 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into partially populated Container)/32        5571 ns      1064 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into partially populated Container)/1024    199220 ns     75462 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into partially populated Container)/8192   1552465 ns   1116094 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into populated Container)/0                   1.70 ns      2.14 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into populated Container)/32                  2562 ns       645 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into populated Container)/1024              228608 ns     39100 ns\nstd::unordered_set\u003cstd::string\u003e::operator\u003d(const\u0026) (into populated Container)/8192             2013723 ns    390401 ns\n```\n\nFixes #77657",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8b8dce508314954011def33c53c207c340c811ef",
      "old_mode": 33188,
      "old_path": "libcxx/docs/ReleaseNotes/22.rst",
      "new_id": "0701618044a3b3066e2f1e79970453ba6f508c90",
      "new_mode": 33188,
      "new_path": "libcxx/docs/ReleaseNotes/22.rst"
    },
    {
      "type": "modify",
      "old_id": "dacc152030e147250293ca721a287d9df089b3a4",
      "old_mode": 33188,
      "old_path": "libcxx/include/__hash_table",
      "new_id": "996ec9fa31ac370a21517e16546db469a837494a",
      "new_mode": 33188,
      "new_path": "libcxx/include/__hash_table"
    },
    {
      "type": "modify",
      "old_id": "97c2c52eba3374d56498df32f27f0d3f2b80bde8",
      "old_mode": 33188,
      "old_path": "libcxx/include/unordered_map",
      "new_id": "104dc56a89feae895762c236e8438760a39ca960",
      "new_mode": 33188,
      "new_path": "libcxx/include/unordered_map"
    },
    {
      "type": "modify",
      "old_id": "475715db62bdb0564538ac291e353b877d3651f4",
      "old_mode": 33188,
      "old_path": "libcxx/include/unordered_set",
      "new_id": "09bd81a22eae577c6ef0e0976fa3d4df33a5c4c6",
      "new_mode": 33188,
      "new_path": "libcxx/include/unordered_set"
    },
    {
      "type": "modify",
      "old_id": "34dec07b03e08c3f5a2cb4a357da49b357660f2c",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/assign_copy.pass.cpp",
      "new_id": "3e4c5b1c03fcd10d09d75e56d667149e9bbf06fd",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/assign_copy.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "793807babbdca7f58eac798f7aec805e951e544f",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/copy.pass.cpp",
      "new_id": "36083d54228fa1264c3414d7664bc3b2dc9ae34b",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/copy.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "65c49f4fdcd00277a27b0e0aa085fc392b7cf54a",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/copy_alloc.pass.cpp",
      "new_id": "652e8ce10ea45046cef24ad69bc517d2539b64b4",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.map/unord.map.cnstr/copy_alloc.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "8897b6abd1439b7c31f4a7c213cecc1e2369095e",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/assign_copy.pass.cpp",
      "new_id": "938b6beccd141702fab354623b3ec72f91589803",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/assign_copy.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "e369ce2ac268e903169091940302ef22641377e5",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/copy.pass.cpp",
      "new_id": "36e6a0487a0736d4306452e1a5af1ff6c4afb5f9",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/copy.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "25348786a360759f8c4cf875dc1f3892a332c281",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/copy_alloc.pass.cpp",
      "new_id": "e9e3668b8b2be2b537f1082af0779fb07277f0ab",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/copy_alloc.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "248d446b92eb7fd5b1a979752c0a7c13bd4f88e1",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/assign_copy.pass.cpp",
      "new_id": "e415253c5f60f115b904359e8247cffc9eb026cd",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/assign_copy.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "fc577f323e43b4a1c9f576789910f2920985b2d4",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/copy.pass.cpp",
      "new_id": "bc74d4a2bbc5746d9536941e074708d4a340cf91",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/copy.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "7f45a3f2e4bd4b5553bb9e3eeb9e0128a8ade8ab",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/copy_alloc.pass.cpp",
      "new_id": "944865183cdda3873c862de252f67974665485bd",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/copy_alloc.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "e606e538efcbe827503ba1a1520812a078247d6e",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/assign_copy.pass.cpp",
      "new_id": "9828b8b459c89b016d27c2c0dbb56d56fed533dd",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/assign_copy.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "e795d810e9fa16a2e72031c4afeabf44868f978c",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/copy.pass.cpp",
      "new_id": "ff8fa13cffe64672d0e2c3a104822e3e756b28fc",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/copy.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "49a5f9406e1e15ae0be70f4a8234878c6ff60d1e",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/copy_alloc.pass.cpp",
      "new_id": "388c5c621db1536a3e8b0af8e1c12d9b04f6f645",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/containers/unord/unord.set/unord.set.cnstr/copy_alloc.pass.cpp"
    }
  ]
}
