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 ToStringarmnn::Measurement23 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 Measurementarmnn::Measurement34 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: ~Instrument()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 HasKernelMeasurements() const64 virtual bool HasKernelMeasurements() const { return false;} 65 66 }; 67 68 } //namespace armnn 69