)]}'
{
  "commit": "7928ca003f738b9d8bbca683477e56359b690744",
  "tree": "c8a926c055fc09cd274f40cc1a88cbeaf4011da3",
  "parents": [
    "d727974f302c0964dc5c8bfe0de405399278854e"
  ],
  "author": {
    "name": "Keir Mierle",
    "email": "mierle@gmail.com",
    "time": "Tue Oct 10 02:15:25 2017 -0700"
  },
  "committer": {
    "name": "Keir Mierle",
    "email": "mierle@gmail.com",
    "time": "Tue Oct 10 14:32:19 2017 -0700"
  },
  "message": "Initial commit of tiny solver\n\nTiny solver is targeted towards small dense least square\nsolves, where the overhead of calling normal Ceres is too\nhigh. For example, when solving for inverse camera\ndistortion for every pixel location in a many-megapixel\nimage. Anecdotally, at one point in the past, tiny solver\nwas ~20x faster than Ceres for the problems it\u0027s intended\nfor. This is due to two key aspects:\n\n  1. Memory is allocated up front: repeated solves incur no\n     allocation overhead beyond a few scalars on the stack.\n  2. The cost function is fully inlined into the solver\n     loop, removing even the cost function call overhead.\n\nTiny solver originated many years ago as part of\nlibmv/Blender, where it is still used for distortion solving\ntoday, but the time has come for it to migrate into Ceres.\n\nThis commit is just the initial import into Ceres.  Follow\nup patches will add further cleanups, and add CostFunction\nand Jet adapters to make it easier to call tiny solver\n(though by using adapters, some performance advantages will\nbe lost).\n\nChange-Id: I8079535cd41382b1e0ac0ca2fca141711c72b7f8\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "efe12d50747a82f0a828a6ee694b89158ce74680",
      "new_mode": 33188,
      "new_path": "include/ceres/tiny_solver.h"
    },
    {
      "type": "modify",
      "old_id": "97db4f3e1df2ab71996dabea9f64949c4e34d01b",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "a31c5a240d7e53e7f1bfea662ba738a1fd7760c9",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "86827d53f0efac6fc0a2abdf511e65112c586936",
      "new_mode": 33188,
      "new_path": "internal/ceres/tiny_solver_test.cc"
    }
  ]
}
