@@ -105,11 +105,13 @@ Timer::Timer(std::string str, SHOWTIME_MODES showtimeMode, TimerResultsIntf* tim
105105 , mStart(std::clock())
106106 , mShowTimeMode(showtimeMode)
107107 , mStopped(showtimeMode == SHOWTIME_MODES::SHOWTIME_NONE || showtimeMode == SHOWTIME_MODES::SHOWTIME_FILE_TOTAL)
108+ , mStartTimePoint(Clock::now())
108109{}
109110
110- Timer::Timer (bool fileTotal, std::string filename)
111- : mStr(std::move(filename))
112- , mStopped(!fileTotal)
111+ Timer::Timer (std::string str)
112+ : mStr(std::move(str))
113+ , mShowTimeMode(SHOWTIME_MODES::SHOWTIME_FILE_TOTAL)
114+ , mStartTimePoint(Clock::now())
113115{}
114116
115117Timer::~Timer ()
@@ -127,22 +129,25 @@ void Timer::stop()
127129 const double sec = static_cast <double >(diff) / CLOCKS_PER_SEC;
128130 std::lock_guard<std::mutex> l (stdCoutLock);
129131 std::cout << mStr << " : " << sec << " s" << std::endl;
130- } else if (mShowTimeMode == SHOWTIME_MODES::SHOWTIME_FILE_TOTAL) {
131- const double sec = static_cast <double >(diff) / CLOCKS_PER_SEC;
132+ } else if (mShowTimeMode == SHOWTIME_MODES::SHOWTIME_FILE_TOTAL && mStartTimePoint != TimePoint{}) {
132133 std::lock_guard<std::mutex> l (stdCoutLock);
133- std::cout << " Check time: " << mStr << " : " << sec << " s " << std::endl;
134+ std::cout << " Check time: " << mStr << " : " << getRealTimePassed () << std::endl;
134135 } else {
135136 if (mTimerResults )
136137 mTimerResults ->addResults (mStr , diff);
138+ else if (mStr .empty () && mStartTimePoint != TimePoint{}) { // Get real time
139+ std::lock_guard<std::mutex> l (stdCoutLock);
140+ std::cout << " Overall time: " << getRealTimePassed () << std::endl;
141+ }
137142 }
138143 }
139144
140145 mStopped = true ;
141146}
142147
143- void Timer::calculateAndOutputTimeDiff ( const tp& start, const tp& end )
148+ std::string Timer::getRealTimePassed ( )
144149{
145- auto diff = std::chrono::duration_cast<std::chrono::microseconds>(end - start );
150+ auto diff = std::chrono::duration_cast<std::chrono::microseconds>(Clock::now () - mStartTimePoint );
146151
147152 // Extract hours
148153 auto hours = std::chrono::duration_cast<std::chrono::hours>(diff);
@@ -160,8 +165,5 @@ void Timer::calculateAndOutputTimeDiff(const tp& start, const tp& end)
160165 ellapsedTime += std::to_string (hours.count ()) + " h " ;
161166 if (minutes.count () > 0 )
162167 ellapsedTime += std::to_string (minutes.count ()) + " m " ;
163- ellapsedTime += std::to_string (seconds) + " s " ;
164-
165- std::lock_guard<std::mutex> l (stdCoutLock);
166- std::cout << " Overall time: " << ellapsedTime << std::endl;
168+ return (ellapsedTime + std::to_string (seconds) + " s " );
167169}
0 commit comments