IAP GITLAB

Skip to content
Snippets Groups Projects
Commit acf5664c authored by Dominik Baack's avatar Dominik Baack Committed by Ralf Ulrich
Browse files

Added more functionality to ExecTime

parent 5030e6e5
No related branches found
No related tags found
No related merge requests found
......@@ -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
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment