diff --git a/src/utils/ExecutionStatManager.cpp b/src/utils/ExecutionStatManager.cpp
index 8fbd32e2c3a200808cd91d26fd845df7a1eb256a..6918d4d7acfc89bb12420b1540a240e1bcd026dc 100644
--- a/src/utils/ExecutionStatManager.cpp
+++ b/src/utils/ExecutionStatManager.cpp
@@ -10,6 +10,39 @@
 
 ExecutionStatManager* ExecutionStatManager::m_instance = nullptr;
 
+std::string
+ExecutionStatManager::_prettyPrintTime(double time_in_seconds) const
+{
+  std::ostringstream os;
+  size_t seconds    = std::floor(time_in_seconds);
+  const size_t days = seconds / (24 * 3600);
+  seconds -= days * (24 * 3600);
+  const size_t hours = seconds / 3600;
+  seconds -= hours * 3600;
+  const size_t minutes = seconds / 60;
+  seconds -= minutes * 60;
+  os << rang::style::bold;
+  bool print = false;
+  if (days > 0) {
+    print = true;
+    os << days << "d" << ' ';
+  }
+  if (print or (hours > 0)) {
+    print = true;
+    os << std::setw(2) << std::setfill('0') << hours << "h";
+  }
+  if (print or (minutes > 0)) {
+    print = true;
+    os << std::setw(2) << std::setfill('0') << minutes << "mn";
+  }
+  if (print) {
+    os << rang::style::bold << std::setw(2) << std::setfill('0') << seconds << "s";
+  }
+  os << rang::style::reset;
+
+  return os.str();
+}
+
 void
 ExecutionStatManager::_printMaxResidentMemory() const
 {
@@ -69,8 +102,12 @@ ExecutionStatManager::_printMaxResidentMemory() const
 void
 ExecutionStatManager::_printElapseTime() const
 {
-  std::cout << "Execution: " << rang::style::bold << m_instance->m_elapse_time.seconds() << 's' << rang::style::reset
-            << '\n';
+  const double elapse_time = m_instance->m_elapse_time.seconds();
+  std::cout << "Execution: " << rang::style::bold << m_instance->m_elapse_time.seconds() << 's' << rang::style::reset;
+  if (elapse_time > 60) {
+    std::cout << " [" << rang::style::bold << this->_prettyPrintTime(elapse_time) << rang::style::reset << ']';
+  }
+  std::cout << '\n';
 }
 
 void
@@ -87,31 +124,7 @@ ExecutionStatManager::_printTotalCPUTime() const
   std::cout << " (" << parallel::allReduceSum(Kokkos::DefaultHostExecutionSpace::concurrency()) << " threads over "
             << parallel::size() << " processes)";
   if (total_cpu_time > 60) {
-    size_t seconds    = std::floor(total_cpu_time);
-    const size_t days = seconds / (24 * 3600);
-    seconds -= days * (24 * 3600);
-    const size_t hours = seconds / 3600;
-    seconds -= hours * 3600;
-    const size_t minutes = seconds / 60;
-    seconds -= minutes * 60;
-    std::cout << " " << rang::style::bold;
-    bool print = false;
-    if (days > 0) {
-      print = true;
-      std::cout << days << "d" << ' ';
-    }
-    if (print or (hours > 0)) {
-      print = true;
-      std::cout << std::setw(2) << std::setfill('0') << hours << "h";
-    }
-    if (print or (minutes > 0)) {
-      print = true;
-      std::cout << std::setw(2) << std::setfill('0') << minutes << "mn";
-    }
-    if (print) {
-      std::cout << rang::style::bold << std::setw(2) << std::setfill('0') << seconds << "s";
-    }
-    std::cout << rang::style::reset;
+    std::cout << " [" << _prettyPrintTime(total_cpu_time) << ']';
   }
   std::cout << '\n';
 }
diff --git a/src/utils/ExecutionStatManager.hpp b/src/utils/ExecutionStatManager.hpp
index 476b31a84f80234a6e8d509ddac88daf9d3b38f8..6f7c333561147ab3fede6c534a9c2680a29bd4cd 100644
--- a/src/utils/ExecutionStatManager.hpp
+++ b/src/utils/ExecutionStatManager.hpp
@@ -12,6 +12,8 @@ class ExecutionStatManager
   Timer m_elapse_time;
   bool m_do_print = true;
 
+  std::string _prettyPrintTime(double seconds) const;
+
   void _printMaxResidentMemory() const;
   void _printElapseTime() const;
   void _printTotalCPUTime() const;