)]}'
{
  "commit": "21f519d009b2123ad328e5f5e0f6523939519d6a",
  "tree": "6b3f48c5794e3b2cddb5e42471ededa02d1cc63a",
  "parents": [
    "0a30117489d9283e19fce95521785a833f91a7c4"
  ],
  "author": {
    "name": "William Rucklidge",
    "email": "wjr@google.com",
    "time": "Fri Mar 02 12:37:54 2018 -0800"
  },
  "committer": {
    "name": "William Rucklidge",
    "email": "wjr@google.com",
    "time": "Fri Mar 02 13:33:19 2018 -0800"
  },
  "message": "Improve threading in covariance.\n\nCovariance computation wants to do a triangular iteration but as a\nsingle loop. Right now it iterates over a square and does nothing half\nthe time, which is inefficient and has bad worst-case threading\nperformance. This adds a utility that allows waste-free linear iteration\nover a triangle.\n\nChange-Id: I881d5683c65882f87dc2b5f8449a855d22ace755\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "25949c17f0f804811f9f03117129f264c720cb76",
      "old_mode": 33188,
      "old_path": "BUILD",
      "new_id": "4018a688a65d6797b5e1a9c54c575946591ed8ec",
      "new_mode": 33188,
      "new_path": "BUILD"
    },
    {
      "type": "modify",
      "old_id": "090707d389cbfb7a80f7c0504f7ad2513497870e",
      "old_mode": 33188,
      "old_path": "bazel/ceres.bzl",
      "new_id": "d90e5a3fc556b5baf4ae228847c1fde9a4f857e3",
      "new_mode": 33188,
      "new_path": "bazel/ceres.bzl"
    },
    {
      "type": "modify",
      "old_id": "bddbe7956b5b4cb5e16ceab19e8cf1cd16358410",
      "old_mode": 33188,
      "old_path": "internal/ceres/CMakeLists.txt",
      "new_id": "55cd0eb2a4b6c0428996963eb6a9ff3ad5e1a158",
      "new_mode": 33188,
      "new_path": "internal/ceres/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "8e135249b8f5f865a076e43c2f44710f66df2c84",
      "old_mode": 33188,
      "old_path": "internal/ceres/covariance_impl.cc",
      "new_id": "c52866bc1c140e1866f3453b490a42adac078969",
      "new_mode": 33188,
      "new_path": "internal/ceres/covariance_impl.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e1cb5f979ec3c645739cfc65c743f6d38bf12617",
      "new_mode": 33188,
      "new_path": "internal/ceres/parallel_utils.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1291428228ae5eb1c40c92a1234e0822a4d113ed",
      "new_mode": 33188,
      "new_path": "internal/ceres/parallel_utils.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f997d25b13c5732adff5f03e294bef6161c8c39f",
      "new_mode": 33188,
      "new_path": "internal/ceres/parallel_utils_test.cc"
    }
  ]
}
