Metric.h revision d2c50b1793f69af4d09b5ba364dc0a1a88ec26f5
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:
25f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    Metric ();
26c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata    Metric (const char*, const char* = NULL);
27f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata
28f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    void
2975fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    Append (ValueType v);
30f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata
31f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    ValueType
3275fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    GetAverage () const;
3375fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton
3475fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    size_t
3575fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    GetCount () const;
36f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata
37f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    ValueType
3875fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    GetSum () const;
39f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata
40f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    const char*
419de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton    GetName () const
4275fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    {
439de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton        if (m_name.empty())
449de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton            return NULL;
4575fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton        return m_name.c_str();
4675fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    }
4775fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton
48c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata    const char*
499de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton    GetDescription () const
5075fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    {
519de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton        if (m_description.empty())
529de4dec874148d30cc1d4c498d38cd048a8164caGreg Clayton            return NULL;
5375fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton        return m_description.c_str();
5475fc5a74d95804e2ddc87bcade177640521147e0Greg Clayton    }
55f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata
569de4dec874148d30cc1d4c498d38cd048a8164caGreg Claytonprivate:
57f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    std::string m_name;
58c50fc4b658c46ef43b1add131391ecdd1f9bd752Enrico Granata    std::string m_description;
59f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    std::vector<ValueType> m_dataset;
60f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata};
61af222500aa2ce2b18149277e561cdf75f2115df2Greg Clayton}
62f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata
63f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata#endif /* defined(__PerfTestDriver__Metric__) */
64