//===-- 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 <vector> #include <string> #include <mach/task_info.h> namespace lldb_perf { class MemoryStats; template <class ValueType> 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<ValueType> m_dataset; }; } #endif /* defined(__PerfTestDriver__Metric__) */