mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 08:34:37 +08:00
Fix and enhance GradientProblemSolver::Summary::FullReport
1. Fix a bug which was causing the cost and gradient evaluation time to not be reported. 2. Add the number of times cost and gradients are evaluated to the Summary object and to the output of FullReport. Change-Id: Id0703cd2dafbf437f3e537fbdc30ae81d5f4f540
This commit is contained in:
@@ -166,10 +166,15 @@ void GradientProblemSolver::Solve(const GradientProblemSolver::Options& options,
|
||||
const std::map<string, double>& evaluator_time_statistics =
|
||||
minimizer_options.evaluator->TimeStatistics();
|
||||
summary->cost_evaluation_time_in_seconds =
|
||||
FindWithDefault(evaluator_time_statistics, "Evaluator::Residual", 0.0);
|
||||
FindWithDefault(evaluator_time_statistics, "Evaluator::Cost", 0.0);
|
||||
summary->gradient_evaluation_time_in_seconds =
|
||||
FindWithDefault(evaluator_time_statistics, "Evaluator::Jacobian", 0.0);
|
||||
|
||||
FindWithDefault(evaluator_time_statistics, "Evaluator::Gradient", 0.0);
|
||||
const std::map<string, int>& evaluator_call_statistics =
|
||||
minimizer_options.evaluator->CallStatistics();
|
||||
summary->num_cost_evaluations =
|
||||
FindWithDefault(evaluator_call_statistics, "Evaluator::Cost", 0);
|
||||
summary->num_gradient_evaluations =
|
||||
FindWithDefault(evaluator_call_statistics, "Evaluator::Gradient", 0);
|
||||
summary->total_time_in_seconds = WallTimeInSeconds() - start_time;
|
||||
}
|
||||
|
||||
@@ -257,14 +262,14 @@ string GradientProblemSolver::Summary::FullReport() const {
|
||||
static_cast<int>(iterations.size()));
|
||||
|
||||
StringAppendF(&report, "\nTime (in seconds):\n");
|
||||
|
||||
StringAppendF(&report, "\n Cost evaluation %23.4f\n",
|
||||
cost_evaluation_time_in_seconds);
|
||||
StringAppendF(&report, " Gradient evaluation %23.4f\n",
|
||||
gradient_evaluation_time_in_seconds);
|
||||
StringAppendF(&report, "\n Cost evaluation %23.4f(%d)\n",
|
||||
cost_evaluation_time_in_seconds,
|
||||
num_cost_evaluations);
|
||||
StringAppendF(&report, " Gradient evaluation %23.4f(%d)\n",
|
||||
gradient_evaluation_time_in_seconds,
|
||||
num_gradient_evaluations);
|
||||
StringAppendF(&report, " Polynomial minimization %17.4f\n",
|
||||
line_search_polynomial_minimization_time_in_seconds);
|
||||
|
||||
StringAppendF(&report, "Total %25.4f\n\n",
|
||||
total_time_in_seconds);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user