Home | History | Annotate | Download | only in lib
      1 //===-- Metric.h ------------------------------------------------*- 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 #ifndef __PerfTestDriver__Metric__
     11 #define __PerfTestDriver__Metric__
     12 
     13 #include <vector>
     14 #include <string>
     15 #include <mach/task_info.h>
     16 
     17 namespace lldb_perf {
     18 
     19 class MemoryStats;
     20 
     21 template <class ValueType>
     22 class Metric
     23 {
     24 public:
     25     enum class StandardDeviationMode
     26     {
     27         eSample,
     28         ePopulation
     29     };
     30 
     31     Metric ();
     32     Metric (const char*, const char* = NULL);
     33 
     34     void
     35     Append (ValueType v);
     36 
     37     ValueType
     38     GetAverage () const;
     39 
     40     size_t
     41     GetCount () const;
     42 
     43     ValueType
     44     GetSum () const;
     45 
     46     ValueType
     47     GetStandardDeviation (StandardDeviationMode mode = StandardDeviationMode::ePopulation) const;
     48 
     49     const char*
     50     GetName () const
     51     {
     52         if (m_name.empty())
     53             return NULL;
     54         return m_name.c_str();
     55     }
     56 
     57     const char*
     58     GetDescription () const
     59     {
     60         if (m_description.empty())
     61             return NULL;
     62         return m_description.c_str();
     63     }
     64 
     65 private:
     66     std::string m_name;
     67     std::string m_description;
     68     std::vector<ValueType> m_dataset;
     69 };
     70 }
     71 
     72 #endif /* defined(__PerfTestDriver__Metric__) */
     73