From 1dd7523f355cef49906b1da6cf7ee17e064ae9bb Mon Sep 17 00:00:00 2001
From: joanvallve <jvallve@iri.upc.edu>
Date: Tue, 5 Oct 2021 13:18:29 +0200
Subject: [PATCH] added a getter of time spent in solving

---
 include/core/ceres_wrapper/solver_ceres.h | 2 ++
 include/core/solver/solver_manager.h      | 2 ++
 src/ceres_wrapper/solver_ceres.cpp        | 5 +++++
 test/dummy/solver_manager_dummy.h         | 1 +
 4 files changed, 10 insertions(+)

diff --git a/include/core/ceres_wrapper/solver_ceres.h b/include/core/ceres_wrapper/solver_ceres.h
index 0673207bc..4bf6f7de6 100644
--- a/include/core/ceres_wrapper/solver_ceres.h
+++ b/include/core/ceres_wrapper/solver_ceres.h
@@ -119,6 +119,8 @@ class SolverCeres : public SolverManager
 
         double finalCost() override;
 
+        double totalTime() override;
+
         ceres::Solver::Options& getSolverOptions();
 
         const Eigen::SparseMatrixd computeHessian() const;
diff --git a/include/core/solver/solver_manager.h b/include/core/solver/solver_manager.h
index 58d21a5cf..f3fbeefb3 100644
--- a/include/core/solver/solver_manager.h
+++ b/include/core/solver/solver_manager.h
@@ -131,6 +131,8 @@ class SolverManager
 
         virtual double finalCost() = 0;
 
+        virtual double totalTime() = 0;
+
         /**
          * \brief Updates solver's problem according to the wolf_problem
          */
diff --git a/src/ceres_wrapper/solver_ceres.cpp b/src/ceres_wrapper/solver_ceres.cpp
index a2d7616c5..5914b40a8 100644
--- a/src/ceres_wrapper/solver_ceres.cpp
+++ b/src/ceres_wrapper/solver_ceres.cpp
@@ -612,6 +612,11 @@ double SolverCeres::finalCost()
     return double(summary_.final_cost);
 }
 
+double SolverCeres::totalTime()
+{
+    return double(summary_.total_time_in_seconds);
+}
+
 ceres::CostFunctionPtr SolverCeres::createCostFunction(const FactorBasePtr& _fac_ptr)
 {
     assert(_fac_ptr != nullptr);
diff --git a/test/dummy/solver_manager_dummy.h b/test/dummy/solver_manager_dummy.h
index aab56cd1a..cf45c71c9 100644
--- a/test/dummy/solver_manager_dummy.h
+++ b/test/dummy/solver_manager_dummy.h
@@ -60,6 +60,7 @@ class SolverManagerDummy : public SolverManager
         SizeStd iterations() override    { return 1;         }
         double  initialCost() override   { return double(1); }
         double  finalCost() override     { return double(0); }
+        double  totalTime() override     { return double(0); }
 
     protected:
 
-- 
GitLab