tree f454242fe1d3a9b7b5f2cacdc88b163200ce4dae
parent 68a7e6212203c4891a2669adecbcbf75d6851ab4
author Sameer Agarwal <sameeragarwal@google.com> 1791591751 -0700
committer Sameer Agarwal <sameeragarwal@google.com> 1792621120 -0700

Unify cost function differentiation benchmarks

Replace internal/ceres/autodiff_benchmarks/ with
internal/ceres/benchmark_cost_functions.h and
internal/ceres/cost_function_differentiation_benchmark.cc:
- Consolidate the benchmark cost functors into
  internal/ceres/benchmark_cost_functions.h as self-contained structs
  inheriting from BenchmarkCostFunctor<kNumResiduals, Ns...> with
  default constructors and MakeParameters(), and remove the
  internal/ceres/autodiff_benchmarks/ subdirectory.
- Add nine real-world camera projection, epipolar, and SLAM cost
  functors (OpenCV, FullOpenCV, Rig, Sampson, Fisheye, and Spherical
  from COLMAP; Brown-Conrady and Nuke InvertIntrinsics from Blender
  libmv; and PoseGraph3dError from Ceres).
- Benchmark AutoDiffCostFunction (static and dynamic residuals),
  DynamicAutoDiffCostFunction, NumericDiffCostFunction, and
  DynamicNumericDiffCostFunction (FORWARD, CENTRAL, RIDDERS) using a
  single BM_CostFunction<CostFunctor, kDiffType, kEvalType> template and
  CostFunctionFactory in cost_function_differentiation_benchmark.cc.
- Add CostFunctionToFunctor and DynamicCostFunctionToFunctor benchmarks.
- Fix ConstantCostFunction to pass kParameterBlockSize instead of 1 and
  remove redundant AnalyticConstantCostFunction.
- Move -mllvm -inlinehint-threshold=1000000 into
  add_dependencies_to_benchmark in internal/ceres/CMakeLists.txt.

Change-Id: Ic02f4d29a15b5faa606a5af033c19d0bfd1bba91
