)]}'
{
  "commit": "9d19a7870add65151ff91bcc26252bb7521065cf",
  "tree": "86c1257ea7f67113ee2dd769071b846194fc2315",
  "parents": [
    "651e16f083bb30729561be1e8bb994893fc2bb53"
  ],
  "author": {
    "name": "Takuto Ikuta",
    "email": "tikuta@google.com",
    "time": "Tue Feb 17 17:13:10 2026 +0900"
  },
  "committer": {
    "name": "GN LUCI",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Tue Feb 17 06:43:02 2026 -0800"
  },
  "message": "[perf] Share ResolvedTargetData across worker threads\n\nThis commit modifies ResolvedTargetData to be thread-safe using a\ncombination of std::shared_mutex for the target-to-info map and\nper-target mutexes with atomic flags for individual property\ncomputations (double-checked locking).\n\nBy sharing a single ResolvedTargetData instance across all worker\nthreads in command_gen.cc, we eliminate redundant computations of\ntransitive dependencies (libs, hard_deps, etc.) that were previously\nperformed independently by each thread.\n\nHyperfine benchmark results on a large Chromium build graph (gn gen):\n- main: 3.538 s ± 0.041 s [User: 18.883 s, System: 2.922 s]\n- shared: 2.894 s ± 0.041 s [User: 13.647 s, System: 3.072 s]\n- Improvement: ~22% faster wall-clock time, ~28% reduction in user CPU time.\n\nBug: 484863025\nChange-Id: Ib9c31feee6a118423b1bb6cf4e5552be660cb7c4\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/21000\nCommit-Queue: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: David Turner \u003cdigit@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "75004e52bee45540f610908cb18441b290d8ffa5",
      "old_mode": 33188,
      "old_path": "src/gn/command_gen.cc",
      "new_id": "8c2a45aae08eb5674f3ef3283429f25f0f6a31ad",
      "new_mode": 33188,
      "new_path": "src/gn/command_gen.cc"
    },
    {
      "type": "modify",
      "old_id": "efe65ceb67224f5c9fdb0894910c792aa0413ceb",
      "old_mode": 33188,
      "old_path": "src/gn/resolved_target_data.cc",
      "new_id": "86ab233450e7977bf89f137263cdd1dd724c189c",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_data.cc"
    },
    {
      "type": "modify",
      "old_id": "febbf39ed31afb6a52b7ca9634a08e3c30ea55dc",
      "old_mode": 33188,
      "old_path": "src/gn/resolved_target_data.h",
      "new_id": "d95459d9824d67fdb654013880ee0c0132d22684",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_data.h"
    }
  ]
}
