)]}'
{
  "commit": "38d4debb6d180ca53fcb12b8115e81fd4c5262d0",
  "tree": "decc9cb8da6d4f9bd4abf102e3bf98e907ed3102",
  "parents": [
    "f380872f0abc7fe98022696996d346df99c53f1a"
  ],
  "author": {
    "name": "Dan McGee",
    "email": "dpmcgee@gmail.com",
    "time": "Tue Oct 18 00:21:23 2011 -0500"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Thu Oct 20 17:17:49 2011 -0700"
  },
  "message": "pack-objects: don\u0027t traverse objects unnecessarily\n\nThis brings back some of the performance lost in optimizing recency\norder inside pack objects. We were doing extreme amounts of object\nre-traversal: for the 2.14 million objects in the Linux kernel\nrepository, we were calling add_to_write_order() over 1.03 billion times\n(a 0.2% hit rate, making 99.8% of of these calls extraneous).\n\nTwo optimizations take place here- we can start our objects array\niteration from a known point where we left off before we started trying\nto find our tags, and we don\u0027t need to do the deep dives required by\nadd_family_to_write_order() if the object has already been marked as\nfilled.\n\nThese two optimizations bring some pretty spectacular results via `perf\nstat`:\n\ntask-clock:   83373 ms        --\u003e 43800 ms         (50% faster)\ncycles:       221,633,461,676 --\u003e 116,307,209,986  (47% fewer)\ninstructions: 149,299,179,939 --\u003e 122,998,800,184  (18% fewer)\n\nHelped-by: Ramsay Jones (format string fix in \"die\" message)\nSigned-off-by: Dan McGee \u003cdpmcgee@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5b544bf444a4c658470496a408aa01682c8f5580",
      "old_mode": 33188,
      "old_path": "builtin/pack-objects.c",
      "new_id": "80ab6c39f91b30be90203da777fd8e3989abdc2c",
      "new_mode": 33188,
      "new_path": "builtin/pack-objects.c"
    }
  ]
}
