)]}'
{
  "commit": "a29e2e8fe7e3935e23d2a03dc429cc9c2e68bfbe",
  "tree": "30d55b442c32426aa8af4a988ab776fb6cdab0a0",
  "parents": [
    "e66077ae45813a5ca269a7d676310a243bdcc1c2"
  ],
  "author": {
    "name": "Patrick Steinhardt",
    "email": "ps@pks.im",
    "time": "Thu Oct 23 09:16:23 2025 +0200"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Tue Nov 04 07:32:25 2025 -0800"
  },
  "message": "ref-filter: parse objects on demand\n\nWhen formatting an arbitrary object we parse that object regardless of\nwhether or not we actually need any parsed data. In fact, many of the\natoms we have don\u0027t require any.\n\nRefactor the code so that we parse the data on demand when we see an\natom that wants to access the objects. This leads to a small speedup,\nfor example in the Chromium repository with around 40000 refs:\n\n    Benchmark 1: for-each-ref --format\u003d\u0027%(raw)\u0027 (HEAD~)\n      Time (mean ± σ):     388.7 ms ±   1.1 ms    [User: 322.2 ms, System: 65.0 ms]\n      Range (min … max):   387.3 ms … 390.8 ms    10 runs\n\n    Benchmark 2: for-each-ref --format\u003d\u0027%(raw)\u0027 (HEAD)\n      Time (mean ± σ):     344.7 ms ±   0.7 ms    [User: 287.8 ms, System: 55.1 ms]\n      Range (min … max):   343.9 ms … 345.7 ms    10 runs\n\n    Summary\n      for-each-ref --format\u003d\u0027%(raw)\u0027 (HEAD) ran\n        1.13 ± 0.00 times faster than for-each-ref --format\u003d\u0027%(raw)\u0027 (HEAD~)\n\nWith this change, we now spend ~90% of the time decompressing objects,\nwhich is almost as good as it gets regarding git-for-each-ref(1)\u0027s own\ninfrastructure.\n\nSigned-off-by: Patrick Steinhardt \u003cps@pks.im\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c54025d6b4c4cd2fd227fb3b690854635ccea025",
      "old_mode": 33188,
      "old_path": "ref-filter.c",
      "new_id": "7cfcd5c35549308dcee9c3654c858f5ebce02a36",
      "new_mode": 33188,
      "new_path": "ref-filter.c"
    }
  ]
}
