|  | #include "time_observer.h" | 
|  | #include "caffe2/core/logging.h" | 
|  |  | 
|  | namespace caffe2 { | 
|  |  | 
|  | void TimeObserver::Start() { | 
|  | start_time_ = timer_.MilliSeconds(); | 
|  | ++iterations_; | 
|  | } | 
|  |  | 
|  | void TimeObserver::Stop() { | 
|  | double current_run = timer_.MilliSeconds() - start_time_; | 
|  | // NOLINTNEXTLINE(cppcoreguidelines-narrowing-conversions,bugprone-narrowing-conversions) | 
|  | total_time_ += current_run; | 
|  | VLOG(1) << "This net iteration took " << current_run << " ms to complete.\n"; | 
|  | } | 
|  |  | 
|  | void TimeOperatorObserver::Start() { | 
|  | start_time_ = timer_.MilliSeconds(); | 
|  | ++iterations_; | 
|  | } | 
|  |  | 
|  | void TimeOperatorObserver::Stop() { | 
|  | double current_run = timer_.MilliSeconds() - start_time_; | 
|  | // NOLINTNEXTLINE(cppcoreguidelines-narrowing-conversions,bugprone-narrowing-conversions) | 
|  | total_time_ += current_run; | 
|  | VLOG(1) << "This operator iteration took " << current_run | 
|  | << " ms to complete.\n"; | 
|  | } | 
|  |  | 
|  | std::unique_ptr<ObserverBase<OperatorBase>> TimeOperatorObserver::rnnCopy( | 
|  | OperatorBase* subject, | 
|  | int rnn_order) const { | 
|  | return std::unique_ptr<ObserverBase<OperatorBase>>( | 
|  | new TimeOperatorObserver(subject, nullptr)); | 
|  | } | 
|  |  | 
|  | } // namespace caffe2 |