Metric.cpp revision 08257e457b2aab6453618cb64c033e5a64115da1
1//===-- Metric.cpp ----------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "Metric.h" 11#include "MemoryGauge.h" 12#include <cmath> 13 14using namespace lldb_perf; 15 16template <class T> 17Metric<T>::Metric () : Metric ("") 18{ 19} 20 21template <class T> 22Metric<T>::Metric (const char* n, const char* d) : 23 m_name(n ? n : ""), 24 m_description(d ? d : ""), 25 m_dataset () 26{ 27} 28 29template <class T> 30void 31Metric<T>::Append (T v) 32{ 33 m_dataset.push_back(v); 34} 35 36template <class T> 37size_t 38Metric<T>::GetCount () const 39{ 40 return m_dataset.size(); 41} 42 43template <class T> 44T 45Metric<T>::GetSum () const 46{ 47 T sum = 0; 48 for (auto v : m_dataset) 49 sum += v; 50 return sum; 51} 52 53template <class T> 54T 55Metric<T>::GetAverage () const 56{ 57 return GetSum()/GetCount(); 58} 59 60template <class T> 61T 62Metric<T>::GetStandardDeviation () const 63{ 64 T average = GetAverage(); 65 T diff_squared = 0; 66 size_t count = GetCount(); 67 for (auto v : m_dataset) 68 diff_squared = diff_squared + ( (v-average)*(v-average) ); 69 diff_squared = diff_squared / count; 70 return sqrt(diff_squared); 71} 72 73template class lldb_perf::Metric<double>; 74template class lldb_perf::Metric<MemoryStats>; 75