1d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton//===-- Metric.h ------------------------------------------------*- C++ -*-===// 2f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 3d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// The LLVM Compiler Infrastructure 4f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 5d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// This file is distributed under the University of Illinois Open Source 6d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton// License. See LICENSE.TXT for details. 7f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata// 8d3a8d6565ff40fd99533f50a085ace806a9300eeGreg Clayton//===----------------------------------------------------------------------===// 9f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 10f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#ifndef __PerfTestDriver__Metric__ 11f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#define __PerfTestDriver__Metric__ 12f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 13f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#include <vector> 14f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#include <string> 15f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#include <mach/task_info.h> 16f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 1775fc5a74d95804e2ddc87bcade177640521147e0Greg Claytonnamespace lldb_perf { 1875fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton 1953bba61c0b9f3b3ceff5835f79d61efa0d81847cEnrico Granataclass MemoryStats; 2075fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton 21f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granatatemplate <class ValueType> 22d2c50b1793f69af4d09b5ba364dc0a1a88ec26f5Greg Claytonclass Metric 2375fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton{ 24f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granatapublic: 25ec87e5c098f1ce1c9182d1c5438e0beca0996597Enrico Granata enum class StandardDeviationMode 26ec87e5c098f1ce1c9182d1c5438e0beca0996597Enrico Granata { 27ec87e5c098f1ce1c9182d1c5438e0beca0996597Enrico Granata eSample, 28ec87e5c098f1ce1c9182d1c5438e0beca0996597Enrico Granata ePopulation 29ec87e5c098f1ce1c9182d1c5438e0beca0996597Enrico Granata }; 30ec87e5c098f1ce1c9182d1c5438e0beca0996597Enrico Granata 31f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata Metric (); 32c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata Metric (const char*, const char* = NULL); 33f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 34f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata void 3575fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton Append (ValueType v); 36f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 37f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata ValueType 3875fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton GetAverage () const; 3975fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton 4075fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton size_t 4175fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton GetCount () const; 42f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 43f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata ValueType 4475fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton GetSum () const; 45f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 4608257e457b2aab6453618cb64c033e5a64115da1Enrico Granata ValueType 47ec87e5c098f1ce1c9182d1c5438e0beca0996597Enrico Granata GetStandardDeviation (StandardDeviationMode mode = StandardDeviationMode::ePopulation) const; 4808257e457b2aab6453618cb64c033e5a64115da1Enrico Granata 49f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata const char* 509de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton GetName () const 5175fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton { 529de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton if (m_name.empty()) 539de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton return NULL; 5475fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton return m_name.c_str(); 5575fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton } 5675fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton 57c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata const char* 589de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton GetDescription () const 5975fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton { 609de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton if (m_description.empty()) 619de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton return NULL; 6275fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton return m_description.c_str(); 6375fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton } 64f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 659de4dec874148d30cc1d4c498d38cd048a8164caGreg Claytonprivate: 66f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata std::string m_name; 67c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata std::string m_description; 68f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata std::vector<ValueType> m_dataset; 69f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata}; 70af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton} 71f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata 72f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#endif /* defined(__PerfTestDriver__Metric__) */ 73