// // Metric.cpp // PerfTestDriver // // Created by Enrico Granata on 3/7/13. // Copyright (c) 2013 Apple Inc. All rights reserved. // #include "Metric.h" #include "CFCMutableArray.h" #include "CFCMutableDictionary.h" #include "CFCString.h" using namespace lldb::perf; template Metric::Metric () : Metric ("") {} template Metric::Metric (const char* n) : m_name(n ? n : ""), m_dataset () {} template void Metric::append (T v) { m_dataset.push_back(v); } template size_t Metric::count () { return m_dataset.size(); } template T Metric::sum () { T sum = 0; for (auto v : m_dataset) sum += v; return sum; } template T Metric::average () { return sum()/count(); } template const char* Metric::name () { return m_name.c_str(); } template void Metric::WriteImpl (CFCMutableArray& parent, identity) { CFCMutableDictionary dict; dict.AddValueCString(CFCString("name").get(),m_name.c_str(), true); dict.AddValueDouble(CFCString("value").get(),this->average(), true); parent.AppendValue(dict.get(), true); } template void Metric::WriteImpl (CFCMutableArray& parent, identity) { CFCMutableDictionary dict; dict.AddValueCString(CFCString("name").get(),m_name.c_str(), true); dict.AddValueUInt64(CFCString("value").get(),this->average(), true); parent.AppendValue(dict.get(), true); } template class lldb::perf::Metric; template class lldb::perf::Metric;