)]}'
{
  "commit": "de0f74e40a49706867287431b4466c1e7a90fbd6",
  "tree": "b6f2a61436a50f117f0e0faee9127fce86e4e662",
  "parents": [
    "ba65ddd311239c26dd8950ab37f504d37bf6fa44"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Thu Aug 25 16:02:14 2022 +0530"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Sun Aug 28 17:24:28 2022 -0700"
  },
  "message": "Optimize  the BlockCRSJacobiPreconditioner\n\nInstead of iterating row-wise, use the row block structure\nto update the preconditioner one row block at a time.\n\nWhile benchmarking, I also found an opportunity to speed up\nBlockSparseJacobiPreconditiner.\n\nBefore\n-----------------------------------------------------------------------------------------\nBenchmark                                               Time             CPU   Iterations\n-----------------------------------------------------------------------------------------\nBM_BlockSparseJacobiPreconditioner              132122392 ns    132103000 ns            5\nBM_BlockCRSJacobiPreconditionerBA                73365217 ns     73335800 ns           10\nBM_BlockSparseJacobiPreconditionerUnstructured   92407762 ns     92407714 ns            7\nBM_BlockCRSJacobiPreconditionerUnstructured      72256367 ns     72256400 ns           10\n\nAfter\n\n-----------------------------------------------------------------------------------------\nBenchmark                                               Time             CPU   Iterations\n-----------------------------------------------------------------------------------------\nBM_BlockSparseJacobiPreconditionerBA             39723456 ns     39722222 ns           18\nBM_BlockCRSJacobiPreconditionerBA                46561625 ns     46561667 ns           15\nBM_BlockSparseJacobiPreconditionerUnstructured   52676208 ns     52676167 ns           12\nBM_BlockCRSJacobiPreconditionerUnstructured      54430564 ns     54421462 ns           13\n\nChange-Id: I6da8e044b26f0c24481deee5722322a606e9e5ca\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "779693c4250fd3cf803c768264bdeaaed026f4bc",
      "old_mode": 33188,
      "old_path": "internal/ceres/block_jacobi_preconditioner.cc",
      "new_id": "7aaa605e33edfcd3bd1ea20ff3c5f3ebfb531a57",
      "new_mode": 33188,
      "new_path": "internal/ceres/block_jacobi_preconditioner.cc"
    }
  ]
}
