)]}'
{
  "commit": "07dbf31eca6851aadaed0dc337e05c8bb5965850",
  "tree": "39c892631af07665fed047dd92e3bb6c6efa6ebb",
  "parents": [
    "0a50cd82445bc975b88bb6e9f2a44db83376a482"
  ],
  "author": {
    "name": "Cheng Wang",
    "email": "wangcheng@google.com",
    "time": "Tue Mar 07 14:57:23 2017 -0800"
  },
  "committer": {
    "name": "Cheng Wang",
    "email": "wangcheng@google.com",
    "time": "Mon Apr 10 09:50:34 2017 -0700"
  },
  "message": "Optimize J\u0027 * J in sparse_normal_cholesky_solver.\n\n1. Add stype to the outerproduct computation to control the output\nmatrix in upper or lower triangular matrix. For SuiteSparse,\nupper triangular matrix is generated. SuiteSparse can directly use\nthis matrix format for cholesky without matrix transpose overhead.\n\n2. Change the outerproduct computation to block multiplication.  This\nreduces the computation complexity for the sort in preprocessing, also\nallows formulation of the block outerproduct computation as dense Eigen\nblock matrix multiplication.\n\n3. Solve 32 Tango problems on Qualcomm MSM8994 Cortex-A53 (1.55GHz)\n   before change: 140 seconds\n   after change: 131 seconds\n\nChange-Id: I8054114cef911de6a303310a448821ca296e4744\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "40977b74c6774ab61340055c32ba9311441fb89f",
      "old_mode": 33188,
      "old_path": "internal/ceres/compressed_row_jacobian_writer.cc",
      "new_id": "6ee7226bef1e3c480b3276c0968d238a6495b0f2",
      "new_mode": 33188,
      "new_path": "internal/ceres/compressed_row_jacobian_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "91d18bbd6049097432a3812c01c66c9be9526030",
      "old_mode": 33188,
      "old_path": "internal/ceres/compressed_row_sparse_matrix.cc",
      "new_id": "5d56612c208a44fbd423b541ba74bdd11c248278",
      "new_mode": 33188,
      "new_path": "internal/ceres/compressed_row_sparse_matrix.cc"
    },
    {
      "type": "modify",
      "old_id": "987339d09a1d73a3a69414a2ee157a5e4fc5cf19",
      "old_mode": 33188,
      "old_path": "internal/ceres/compressed_row_sparse_matrix.h",
      "new_id": "7b0d6775ba0ed0ad29ce7d358fd260ea3ec173dc",
      "new_mode": 33188,
      "new_path": "internal/ceres/compressed_row_sparse_matrix.h"
    },
    {
      "type": "modify",
      "old_id": "385d372c1b0861d59911dce4eec4944a90c3be46",
      "old_mode": 33188,
      "old_path": "internal/ceres/compressed_row_sparse_matrix_test.cc",
      "new_id": "18d95e607b555d3ba3a6d50a89aeeab09cc3b78f",
      "new_mode": 33188,
      "new_path": "internal/ceres/compressed_row_sparse_matrix_test.cc"
    },
    {
      "type": "modify",
      "old_id": "a4c2c766ddc226927540e3156f0f57b49648c13a",
      "old_mode": 33188,
      "old_path": "internal/ceres/sparse_normal_cholesky_solver.cc",
      "new_id": "840120284f27e5a60691ed4535613e19400ac8ea",
      "new_mode": 33188,
      "new_path": "internal/ceres/sparse_normal_cholesky_solver.cc"
    },
    {
      "type": "modify",
      "old_id": "201887736b7139788965eda6f142be85aef2f4ed",
      "old_mode": 33188,
      "old_path": "internal/ceres/suitesparse.cc",
      "new_id": "b136ce2968c2d310742f0916ad7003ce2c401177",
      "new_mode": 33188,
      "new_path": "internal/ceres/suitesparse.cc"
    },
    {
      "type": "modify",
      "old_id": "380d76e003ac43dc6f59783da2e1e61524ef739d",
      "old_mode": 33188,
      "old_path": "internal/ceres/suitesparse.h",
      "new_id": "380c16be2a4fede4c6153eecc78cae61d0ded22c",
      "new_mode": 33188,
      "new_path": "internal/ceres/suitesparse.h"
    },
    {
      "type": "modify",
      "old_id": "640009d05b56d125e160ba68d033f70011e18698",
      "old_mode": 33188,
      "old_path": "internal/ceres/unsymmetric_linear_solver_test.cc",
      "new_id": "95797c52e318b53ca8fd1b264ceda37c9449ae8a",
      "new_mode": 33188,
      "new_path": "internal/ceres/unsymmetric_linear_solver_test.cc"
    }
  ]
}
