Update ACL pin to b309fc249e4383b4d40ae03e377c3cbad3f9f5f7
[platform/upstream/armnn.git] / src / armnn / Instrument.hpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #pragma once
7
8 #include <string>
9 #include <vector>
10
11 namespace armnn
12 {
13
14 struct Measurement
15 {
16     enum Unit
17     {
18         TIME_NS,
19         TIME_US,
20         TIME_MS,
21     };
22
23     inline static const char* ToString(Unit unit)
24     {
25         switch (unit)
26         {
27             case TIME_NS: return "ns";
28             case TIME_US: return "us";
29             case TIME_MS: return "ms";
30             default:      return "";
31         }
32     }
33
34     Measurement(const std::string& name, double value, Unit unit)
35         : m_Name(name)
36         , m_Value(value)
37         , m_Unit(unit)
38     {}
39     Measurement(const Measurement&) = default;
40     ~Measurement() = default;
41
42     std::string m_Name;
43     double m_Value;
44     Unit m_Unit;
45
46 private:
47     // please don't default construct, otherwise Units will be wrong
48     Measurement() = delete;
49 };
50
51 class Instrument
52 {
53 public:
54     virtual ~Instrument() {}
55
56     virtual void Start() = 0;
57
58     virtual void Stop() = 0;
59
60     virtual std::vector<Measurement> GetMeasurements() const = 0;
61
62     virtual const char* GetName() const = 0;
63
64 };
65
66 } //namespace armnn