Untitled

 avatar
unknown
plain_text
4 months ago
995 B
4
Indexable
class Timer {
 public:
#ifdef TIME_MEASUREMENT
  Timer(const std::string& name, float* time_output = nullptr)
      : name_(name), time_output_(time_output) {
    time_start_ = 0;
    time_end_ = 0;
    time_start_ = std::chrono::duration_cast<microseconds>(
                      steady_clock::now().time_since_epoch())
                      .count();
    LOG_INFO("timer start ...");
  }
  ~Timer() {
    time_end_ = std::chrono::duration_cast<microseconds>(
                    steady_clock::now().time_since_epoch())
                    .count();
    float msec = (float)(time_end_ - time_start_) / 1000.f;
    if (time_output_ != nullptr) {
      *time_output_ = msec;
    }
    LOG_INFO(name_.c_str() << " Used Time: " << msec << " ms");
  }
#else
  Timer(const std::string& funcName) {}
  ~Timer() {}
#endif
 private:
  Timer() {}
  Timer& operator=(const Timer& obj) { return *this; }
 private:
  std::string name_;
  uint64_t time_start_;
  uint64_t time_end_;
  float* time_output_;
};
Editor is loading...
Leave a Comment