//===-- Metric.h ------------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef __PerfTestDriver__Metric__ #define __PerfTestDriver__Metric__ #include #include #include namespace lldb_perf { class MemoryStats; template class Metric { public: enum class StandardDeviationMode { eSample, ePopulation }; Metric(); Metric(const char *, const char * = NULL); void Append(ValueType v); ValueType GetAverage() const; size_t GetCount() const; ValueType GetSum() const; ValueType GetStandardDeviation( StandardDeviationMode mode = StandardDeviationMode::ePopulation) const; const char *GetName() const { if (m_name.empty()) return NULL; return m_name.c_str(); } const char *GetDescription() const { if (m_description.empty()) return NULL; return m_description.c_str(); } private: std::string m_name; std::string m_description; std::vector m_dataset; }; } #endif /* defined(__PerfTestDriver__Metric__) */