Skip to content

Commit

Permalink
use steady_clock instead of system_clock, and refactor the Timer impl…
Browse files Browse the repository at this point in the history
…ementation
  • Loading branch information
sewenew committed Oct 20, 2019
1 parent 1163dcd commit f251b55
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions HugeCTR/include/utils.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,36 +37,36 @@ namespace HugeCTR {
class Timer {
public:
void start() {
m_StartTime_ = std::chrono::system_clock::now();
m_StartTime_ = std::chrono::steady_clock::now();
m_bRunning_ = true;
}
void stop() {
m_EndTime_ = std::chrono::system_clock::now();
m_EndTime_ = std::chrono::steady_clock::now();
m_bRunning_ = false;
}
double elapsedMilliseconds() {
std::chrono::time_point<std::chrono::system_clock> endTime;
if (m_bRunning_) {
endTime = std::chrono::system_clock::now();
} else {
endTime = m_EndTime_;
}
return std::chrono::duration_cast<std::chrono::milliseconds>(endTime - m_StartTime_).count();
return std::chrono::duration_cast<std::chrono::milliseconds>(elapsed()).count();
}
double elapsedMicroseconds() {
std::chrono::time_point<std::chrono::system_clock> endTime;
return elapsed().count();
}
double elapsedSeconds() {
return std::chrono::duration_cast<std::chrono::seconds>(elapsed()).count();
}

private:
std::chrono::microseconds elapsed() {
std::chrono::time_point<std::chrono::steady_clock> endTime;
if (m_bRunning_) {
endTime = std::chrono::system_clock::now();
endTime = std::chrono::steady_clock::now();
} else {
endTime = m_EndTime_;
}
return std::chrono::duration_cast<std::chrono::microseconds>(endTime - m_StartTime_).count();
return std::chrono::duration_cast<std::chrono::microseconds>(endTime - m_StartTime_);
}
double elapsedSeconds() { return elapsedMilliseconds() / 1000.0; }

private:
std::chrono::time_point<std::chrono::system_clock> m_StartTime_;
std::chrono::time_point<std::chrono::system_clock> m_EndTime_;
std::chrono::time_point<std::chrono::steady_clock> m_StartTime_{};
std::chrono::time_point<std::chrono::steady_clock> m_EndTime_{};
bool m_bRunning_ = false;
};

Expand Down

0 comments on commit f251b55

Please sign in to comment.