diff --git a/Processes/DevTools/Analytics/ExecTime.cc b/Processes/DevTools/Analytics/ExecTime.cc
index 792e69ebcef61086fa864be8e4fe641883e3a9b7..18c31b5a1bb426883fb548a13b268cd100af13ab 100644
--- a/Processes/DevTools/Analytics/ExecTime.cc
+++ b/Processes/DevTools/Analytics/ExecTime.cc
@@ -15,10 +15,50 @@ namespace corsika::process {
   namespace devtools {
 
     template <class T>
-    void ExecTime<T>::start() {}
+    void ExecTime<T>::start() {
+      fStart = std::chrono::steady_clock::now();
+    }
 
     template <class T>
-    void ExecTime<T>::stop() {}
+    void ExecTime<T>::stop() {
+      auto end = std::chrono::steady_clock::now();
+      std::chrono::microseconds timeDiv =
+          std::chrono::duration_cast<std::chrono::microseconds>(end - start);
+
+      fElapsedSum += timeDiv;
+      fN++;
+
+      if (fMax < timeDiv) fMax = timeDiv;
+
+      if (timeDiv < fMin) fMin = timeDiv;
+
+      auto delta = timeDiv - fMean;
+      fMean += delta / fN;
+
+      auto delta2 = timeDiv - fMean;
+
+      fMean2 += delta * delta2;
+    }
+
+    template <typename T>
+    double ExecTime<T>::mean() {
+      return fMean;
+    }
+
+    template <typename T>
+    double ExecTime<T>::var() {
+      return fMean2 / count;
+    }
+
+    template <typename T>
+    double ExecTime<T>::min() {
+      return fMin;
+    }
+
+    template <typename T>
+    double ExecTime<T>::max() {
+      return fMax;
+    }
 
   } // namespace devtools
 } // namespace corsika::process
\ No newline at end of file
diff --git a/Processes/DevTools/Analytics/ExecTime.h b/Processes/DevTools/Analytics/ExecTime.h
index 033e7cc823cf47b0680149a1d42d408b3be83776..aef2c588d14e247051d6095d0ac2eedad3e81301 100644
--- a/Processes/DevTools/Analytics/ExecTime.h
+++ b/Processes/DevTools/Analytics/ExecTime.h
@@ -108,22 +108,30 @@ namespace corsika::process {
               std::is_base_of<BoundaryCrossingProcess<typename T::_TDerived>, T>::value>,
           public ExecTime_Continuous<
               T, std::is_base_of<ContinuousProcess<typename T::_TDerived>, T>::value>,
-          public ExecTime_Decay<T,
-                         std::is_base_of<DecayProcess<typename T::_TDerived>, T>::value>,
+          public ExecTime_Decay<
+              T, std::is_base_of<DecayProcess<typename T::_TDerived>, T>::value>,
           public ExecTime_Interaction<
               T, std::is_base_of<InteractionProcess<typename T::_TDerived>, T>::value>,
           public ExecTime_Secondaries<
               T, std::is_base_of<SecondariesProcess<typename T::_TDerived>, T>::value> {
     private:
+      std::chrono::microseconds fStart;
+      std::chrono::microseconds fElapsedSum;
+      std::chrono::microseconds fMean;
+      std::chrono::microseconds fMean2;
+      std::chrono::microseconds fMin;
+      std::chrono::microseconds fMax;
+      long long fN;
+
       void start();
       void stop();
 
     protected:
     public:
-      float mean();
-      float min();
-      float max();
-      float var();
+      double mean();
+      double min();
+      double max();
+      double var();
 
       /*
                   // Stack