summaryrefslogtreecommitdiff
path: root/tools/lldb-perf/lib/Metric.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/lldb-perf/lib/Metric.h')
-rw-r--r--tools/lldb-perf/lib/Metric.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/tools/lldb-perf/lib/Metric.h b/tools/lldb-perf/lib/Metric.h
new file mode 100644
index 0000000000000..45342d25b41ae
--- /dev/null
+++ b/tools/lldb-perf/lib/Metric.h
@@ -0,0 +1,72 @@
+//===-- 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__) */