mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 08:34:37 +08:00
Improve ExecutionSummary
1. Replace two maps by 1. 2. Update number of calls and the time for the call at the cost of a single map lookup. 3. Add Solver::Summary::num_linear_solves. Fixes https://github.com/ceres-solver/ceres-solver/issues/340 Change-Id: I71eb9be7fb363a8cb066591c4c1761f256c81677
This commit is contained in:
@@ -98,6 +98,7 @@ void GradientProblemSolver::Solve(const GradientProblemSolver::Options& options,
|
||||
const GradientProblem& problem,
|
||||
double* parameters_ptr,
|
||||
GradientProblemSolver::Summary* summary) {
|
||||
using internal::CallStatistics;
|
||||
using internal::GradientProblemEvaluator;
|
||||
using internal::GradientProblemSolverStateUpdatingCallback;
|
||||
using internal::LoggingCallback;
|
||||
@@ -174,18 +175,22 @@ void GradientProblemSolver::Solve(const GradientProblemSolver::Options& options,
|
||||
SetSummaryFinalCost(summary);
|
||||
}
|
||||
|
||||
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);
|
||||
summary->gradient_evaluation_time_in_seconds =
|
||||
FindWithDefault(evaluator_time_statistics, "Evaluator::Jacobian", 0.0);
|
||||
const std::map<string, int>& evaluator_call_statistics =
|
||||
minimizer_options.evaluator->CallStatistics();
|
||||
summary->num_cost_evaluations =
|
||||
FindWithDefault(evaluator_call_statistics, "Evaluator::Residual", 0);
|
||||
summary->num_gradient_evaluations =
|
||||
FindWithDefault(evaluator_call_statistics, "Evaluator::Jacobian", 0);
|
||||
const std::map<string, CallStatistics>& evaluator_statistics =
|
||||
minimizer_options.evaluator->Statistics();
|
||||
{
|
||||
const CallStatistics& call_stats = FindWithDefault(
|
||||
evaluator_statistics, "Evaluator::Residual", CallStatistics());
|
||||
summary->cost_evaluation_time_in_seconds = call_stats.time;
|
||||
summary->num_cost_evaluations = call_stats.calls;
|
||||
}
|
||||
|
||||
{
|
||||
const CallStatistics& call_stats = FindWithDefault(
|
||||
evaluator_statistics, "Evaluator::Jacobian", CallStatistics());
|
||||
summary->gradient_evaluation_time_in_seconds = call_stats.time;
|
||||
summary->num_gradient_evaluations = call_stats.calls;
|
||||
}
|
||||
|
||||
summary->total_time_in_seconds = WallTimeInSeconds() - start_time;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user