)]}'
{
  "commit": "b39a734097d5095d63eb9c709a6aaf965633bb01",
  "tree": "78afaae4c1229163279b902bacf99445dc16e767",
  "parents": [
    "4b4e5a1411c8b970983fb6022db1da31c4f5c301"
  ],
  "author": {
    "name": "Denis Vlasenko",
    "email": "vda.linux@googlemail.com",
    "time": "Sun Jul 15 23:41:54 2007 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.linux-foundation.org",
    "time": "Mon Jul 16 09:05:52 2007 -0700"
  },
  "message": "vsprintf.c: optimizing, part 1 (easy and obvious stuff)\n\n* There is no point in having full \"0...9a...z\" constant vector,\n  if we use only \"0...9a...f\" (and \"x\" for \"0x\").\n\n* Post-decrement usually needs a few more instructions, so use\n  pre decrement instead where makes sense:\n-       while (i \u003c precision--) {\n+       while (i \u003c\u003d --precision) {\n\n* if base !\u003d 10 (\u003d\u003e base 8 or 16), we can avoid using division\n  in a loop and use mask/shift, obtaining much faster conversion.\n  (More complex optimization for base 10 case is in the second patch).\n\nOverall, size vsprintf.o shows ~80 bytes smaller text section\nwith this patch applied.\n\nSigned-off-by: Douglas W Jones \u003cjones@cs.uiowa.edu\u003e\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0172902412613025213c07e7758af9492e2bd761",
      "old_mode": 33188,
      "old_path": "lib/vsprintf.c",
      "new_id": "e94b4bd25bc5fae8fbe2c39afc0155f50d834077",
      "new_mode": 33188,
      "new_path": "lib/vsprintf.c"
    }
  ]
}
