)]}'
{
  "commit": "520d35ef22dbcb05e344451c03ae64304e524a06",
  "tree": "bb95d578a625d1e3e81420933e0c0050ef3fc788",
  "parents": [
    "25ac54807eedf16fd6c34efc390901ee549a7d14"
  ],
  "author": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Thu Apr 04 08:16:02 2013 -0700"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Thu Apr 04 18:02:08 2013 -0700"
  },
  "message": "Further BLAS improvements.\n\n1. Switch to Eigen\u0027s implementation when all dimensions are fixed.\n2. Use lazyProduct for eigen matrix-vector product. This brings\n   eigen\u0027s performance on iterative_schur closer to what it used\n   to be before the last commit. There is however still an\n   improvement to be had by using the naive implementation when\n   the matrix and vector have dynamic dimensions.\n\nBENCHMARK\n                                      HEAD                                       CHANGE\n\nproblem-16-22106-pre.txt\ngcc-eigen       sparse_schur         0.859    gcc-eigen       sparse_schur        0.853\nclang-eigen     sparse_schur         0.848    clang-eigen     sparse_schur        0.850\ngcc-blas        sparse_schur         0.956    gcc-blas        sparse_schur        0.865\nclang-blas      sparse_schur         0.954    clang-blas      sparse_schur        0.858\ngcc-eigen       iterative_schur      4.656    gcc-eigen       iterative_schur     3.271\nclang-eigen     iterative_schur      4.664    clang-eigen     iterative_schur     3.307\ngcc-blas        iterative_schur      2.598    gcc-blas        iterative_schur     2.620\nclang-blas      iterative_schur      2.554    clang-blas      iterative_schur     2.567\n\nproblem-49-7776-pre.txt\ngcc-eigen       sparse_schur         0.477    gcc-eigen       sparse_schur        0.472\nclang-eigen     sparse_schur         0.475    clang-eigen     sparse_schur        0.479\ngcc-blas        sparse_schur         0.521    gcc-blas        sparse_schur        0.469\nclang-blas      sparse_schur         0.508    clang-blas      sparse_schur        0.471\ngcc-eigen       iterative_schur      3.172    gcc-eigen       iterative_schur     2.088\nclang-eigen     iterative_schur      3.161    clang-eigen     iterative_schur     2.079\ngcc-blas        iterative_schur      1.701    gcc-blas        iterative_schur     1.720\nclang-blas      iterative_schur      1.708    clang-blas      iterative_schur     1.694\n\nproblem-245-198739-pre.txt\ngcc-eigen       sparse_schur        28.092    gcc-eigen       sparse_schur       28.233\nclang-eigen     sparse_schur        28.148    clang-eigen     sparse_schur       28.400\ngcc-blas        sparse_schur        30.919    gcc-blas        sparse_schur       28.110\nclang-blas      sparse_schur        31.001    clang-blas      sparse_schur       28.407\ngcc-eigen       iterative_schur     63.095    gcc-eigen       iterative_schur    43.694\nclang-eigen     iterative_schur     63.412    clang-eigen     iterative_schur    43.473\ngcc-blas        iterative_schur     33.353    gcc-blas        iterative_schur    33.321\nclang-blas      iterative_schur     33.276    clang-blas      iterative_schur    33.278\n\nproblem-257-65132-pre.txt\ngcc-eigen       sparse_schur         3.687    gcc-eigen       sparse_schur        3.629\nclang-eigen     sparse_schur         3.669    clang-eigen     sparse_schur        3.652\ngcc-blas        sparse_schur         3.947    gcc-blas        sparse_schur        3.673\nclang-blas      sparse_schur         3.952    clang-blas      sparse_schur        3.678\ngcc-eigen       iterative_schur    121.512    gcc-eigen       iterative_schur    76.833\nclang-eigen     iterative_schur    123.547    clang-eigen     iterative_schur    78.763\ngcc-blas        iterative_schur     68.334    gcc-blas        iterative_schur    68.612\nclang-blas      iterative_schur     67.793    clang-blas      iterative_schur    68.266\n\nNotes:\n\n1. Naive BLAS was a bit worse than eigen on fixed sized matrices. We did not see this\n   before because of the different inlining thresholds. Fixing this boosted eigen\u0027s\n   performance. Also the disparity between gcc and clang has gone away.\n\n2. SPARSE_SCHUR performance remains the same, since it is only testing static sized\n   matrices.\n\n3. ITERATIVE_SCHUR performance goes up substantially due to the lazyProduct change,\n   but even there, since most of the products are dynamic sized, the naive implementation\n   wins handily.\n\nChange-Id: Idc17f35b9c68aaebb1b2e131adf3af8374a85a4c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "028b63a64a7cee99fb12f597059d1098856da8b6",
      "old_mode": 33188,
      "old_path": "internal/ceres/blas.h",
      "new_id": "12667d09e55bf32defb94260d34db041d684ce52",
      "new_mode": 33188,
      "new_path": "internal/ceres/blas.h"
    }
  ]
}
