diff --git a/include/core/ceres_wrapper/solver_ceres.h b/include/core/ceres_wrapper/solver_ceres.h
index 0673207bc47e1873084e3f4d711628a67b322f3c..4bf6f7de661059e7c9f96e7f12bb444f18bed013 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 58d21a5cf834cc18372a197b3bbbead9894e46f6..f3fbeefb3dce65e58ad82d3c604ba3e554169624 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 a2d7616c58181be35b9aae642e0e8e9f956b4879..5914b40a8bc67e44bbc392b146766331e344ced7 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 aab56cd1ab532a6a7d3e4b876f2de6dea0ea1b7b..cf45c71c94167f934504e5f97f91080d4d011ce8 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: