xref: /aosp_15_r20/external/armnn/src/armnn/WallClockTimer.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "WallClockTimer.hpp"
7 
8 namespace armnn
9 {
10 
11 const std::string WallClockTimer::WALL_CLOCK_TIME      ("Wall clock time");
12 const std::string WallClockTimer::WALL_CLOCK_TIME_START(WallClockTimer::WALL_CLOCK_TIME + " (Start)");
13 const std::string WallClockTimer::WALL_CLOCK_TIME_STOP (WallClockTimer::WALL_CLOCK_TIME + " (Stop)");
14 
GetName() const15 const char* WallClockTimer::GetName() const
16 {
17     return "WallClockTimer";
18 }
19 
Start()20 void WallClockTimer::Start()
21 {
22     m_Start = clock::now();
23 }
24 
Stop()25 void WallClockTimer::Stop()
26 {
27     m_Stop = clock::now();
28 }
29 
GetMeasurements() const30 std::vector<Measurement> WallClockTimer::GetMeasurements() const
31 {
32     const auto delta       = std::chrono::duration<double, std::micro>(m_Stop - m_Start);
33     const auto startTimeMs = std::chrono::duration<double, std::micro>(m_Start.time_since_epoch());
34     const auto stopTimeMs  = std::chrono::duration<double, std::micro>(m_Stop.time_since_epoch());
35 
36     return { { WALL_CLOCK_TIME,       delta.count(),       Measurement::Unit::TIME_US },
37              { WALL_CLOCK_TIME_START, startTimeMs.count(), Measurement::Unit::TIME_US },
38              { WALL_CLOCK_TIME_STOP,  stopTimeMs.count(),  Measurement::Unit::TIME_US } };
39 }
40 
41 } //namespace armnn
42