Expand reporting of timing information.
1. Add an ExecutionSummary object to record execution
information about Ceres objects.
2. Add an EventLogger object to log events in a function call.
3. Add a ScopedExecutionTimer object to log times in ExecutionSummary.
4. Instrument ProgramEvaluator and all the linear solvers
to report their timing statistics.
5. Connect the timing statistics to Summary::FullReport.
6. Add high precision timer on unix systems using
gettimeofday() call.
7. Various minor clean ups all around.
Change-Id: I5e09804b730b09535484124be7dbc1c58eccd1d4
diff --git a/internal/ceres/solver.cc b/internal/ceres/solver.cc
index af32629..2ae255a 100644
--- a/internal/ceres/solver.cc
+++ b/internal/ceres/solver.cc
@@ -94,6 +94,9 @@
minimizer_time_in_seconds(-1.0),
postprocessor_time_in_seconds(-1.0),
total_time_in_seconds(-1.0),
+ linear_solver_time_in_seconds(-1.0),
+ residual_evaluation_time_in_seconds(-1.0),
+ jacobian_evaluation_time_in_seconds(-1.0),
num_parameter_blocks(-1),
num_parameters(-1),
num_residual_blocks(-1),
@@ -264,11 +267,22 @@
StringAppendF(&report, "Total % 20d\n",
num_successful_steps + num_unsuccessful_steps);
StringAppendF(&report, "\nTime (in seconds):\n");
- StringAppendF(&report, "Preprocessor % 25e\n",
+ StringAppendF(&report, "Preprocessor % 25.3e\n",
preprocessor_time_in_seconds);
- StringAppendF(&report, "Minimizer % 25e\n",
+
+ StringAppendF(&report, "\n Residual Evaluations % 22.3e\n",
+ residual_evaluation_time_in_seconds);
+ StringAppendF(&report, " Jacobian Evaluations % 22.3e\n",
+ jacobian_evaluation_time_in_seconds);
+ StringAppendF(&report, " Linear Solver % 23.3e\n",
+ linear_solver_time_in_seconds);
+ StringAppendF(&report, "Minimizer % 25.3e\n\n",
minimizer_time_in_seconds);
- StringAppendF(&report, "Total % 25e\n",
+
+ StringAppendF(&report, "Postprocessor % 24.3e\n",
+ postprocessor_time_in_seconds);
+
+ StringAppendF(&report, "Total % 25.3e\n\n",
total_time_in_seconds);
StringAppendF(&report, "Termination: %25s\n",