Files
pytorch/caffe2/core/timer.h

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

49 lines
1.2 KiB
C
Raw Normal View History

2015-12-11 10:59:22 -08:00
#ifndef CAFFE2_CORE_TIMER_H_
#define CAFFE2_CORE_TIMER_H_
#include <chrono>
#include <c10/macros/Macros.h>
2015-12-11 10:59:22 -08:00
namespace caffe2 {
/**
* @brief A simple timer object for measuring time.
*
* This is a minimal class around a std::chrono::high_resolution_clock that
* serves as a utility class for testing code.
*/
class Timer {
public:
typedef std::chrono::high_resolution_clock clock;
typedef std::chrono::nanoseconds ns;
Timer() { Start(); }
/**
* @brief Starts a timer.
*/
inline void Start() { start_time_ = clock::now(); }
inline float NanoSeconds() {
return static_cast<float>(
std::chrono::duration_cast<ns>(clock::now() - start_time_).count());
2015-12-11 10:59:22 -08:00
}
/**
* @brief Returns the elapsed time in milliseconds.
*/
inline float MilliSeconds() { return NanoSeconds() / 1000000.f; }
/**
* @brief Returns the elapsed time in microseconds.
*/
inline float MicroSeconds() { return NanoSeconds() / 1000.f; }
2016-05-13 14:43:48 -07:00
/**
* @brief Returns the elapsed time in seconds.
*/
inline float Seconds() { return NanoSeconds() / 1000000000.f; }
2015-12-11 10:59:22 -08:00
protected:
std::chrono::time_point<clock> start_time_;
C10_DISABLE_COPY_AND_ASSIGN(Timer);
2015-12-11 10:59:22 -08:00
};
}
#endif // CAFFE2_CORE_TIMER_H_