From 2a1309f2134986edcbff846aff5951ec1e8df6e1 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Wed, 21 Jul 2010 15:53:53 -0700 Subject: stats: cleanup a few small problems in stats --- src/base/statistics.hh | 43 ++++++++++++++++--------------------------- src/base/stats/text.cc | 16 ++++++++++++---- src/unittest/stattest.cc | 14 +++++++------- 3 files changed, 35 insertions(+), 38 deletions(-) diff --git a/src/base/statistics.hh b/src/base/statistics.hh index 37bb1b90b..5fca376e3 100644 --- a/src/base/statistics.hh +++ b/src/base/statistics.hh @@ -401,7 +401,7 @@ class DataWrapVec2d : public DataWrapVec } Derived & - ysubname(off_type index, const std::string subname) + ysubname(off_type index, const std::string &subname) { Derived &self = this->self(); Info *info = this->info(); @@ -411,6 +411,13 @@ class DataWrapVec2d : public DataWrapVec info->y_subnames[index] = subname.c_str(); return self; } + + std::string + ysubname(off_type i) const + { + return this->info()->y_subnames[i]; + } + }; ////////////////////////////////////////////////////////////////////// @@ -1197,8 +1204,6 @@ class Vector2dBase : public DataWrapVec2d return self; } - std::string ysubname(off_type i) const { return (*this->y_subnames)[i]; } - Proxy operator[](off_type index) { @@ -1713,13 +1718,10 @@ class VectorDistBase : public DataWrapVec bool zero() const { - return false; -#if 0 for (off_type i = 0; i < size(); ++i) if (!data(i)->zero()) return false; return true; -#endif } void @@ -1792,27 +1794,6 @@ class DistProxy */ void reset() { } }; -/* -template -inline typename VectorDistBase::Proxy -VectorDistBase::operator[](off_type index) -{ - assert (index >= 0 && index < size()); - typedef typename VectorDistBase::Proxy Proxy; - return Proxy(this->self(), index); -} -*/ - -#if 0 -template -Result -VectorDistBase::total(off_type index) const -{ - Result total = 0.0; - for (off_type i = 0; i < x_size(); ++i) - total += data(i)->result(); -} -#endif ////////////////////////////////////////////////////////////////////// // @@ -2291,7 +2272,9 @@ class StandardDeviation : public DistBase */ StandardDeviation() { + SampleStor::Params *params = new SampleStor::Params; this->doInit(); + this->setParams(params); } }; @@ -2307,7 +2290,9 @@ class AverageDeviation : public DistBase */ AverageDeviation() { + AvgSampleStor::Params *params = new AvgSampleStor::Params; this->doInit(); + this->setParams(params); } }; @@ -2356,7 +2341,9 @@ class VectorStandardDeviation VectorStandardDeviation & init(size_type size) { + SampleStor::Params *params = new SampleStor::Params; this->doInit(size); + this->setParams(params); return this->self(); } }; @@ -2377,7 +2364,9 @@ class VectorAverageDeviation VectorAverageDeviation & init(size_type size) { + AvgSampleStor::Params *params = new AvgSampleStor::Params; this->doInit(size); + this->setParams(params); return this->self(); } }; diff --git a/src/base/stats/text.cc b/src/base/stats/text.cc index f3c4d1c58..87bb05323 100644 --- a/src/base/stats/text.cc +++ b/src/base/stats/text.cc @@ -348,10 +348,18 @@ DistPrint::init(const Text *text, const Info &info, const DistParams *params) descriptions = text->descriptions; type = params->type; - min = params->min; - max = params->max; - bucket_size = params->bucket_size; - size = params->buckets; + switch (type) { + case Dist: + min = params->min; + max = params->max; + bucket_size = params->bucket_size; + size = params->buckets; + break; + case Deviation: + break; + default: + panic("unknown distribution type"); + } } void diff --git a/src/unittest/stattest.cc b/src/unittest/stattest.cc index 9c10d078c..7c7b116a8 100644 --- a/src/unittest/stattest.cc +++ b/src/unittest/stattest.cc @@ -38,6 +38,7 @@ #include "base/stats/text.hh" #include "base/stats/mysql.hh" #include "base/types.hh" +#include "sim/stat_control.hh" using namespace std; using namespace Stats; @@ -67,7 +68,6 @@ int main(int argc, char *argv[]) { bool descriptions = false; - bool compat = false; bool text = false; #if USE_MYSQL @@ -82,9 +82,6 @@ main(int argc, char *argv[]) progname = argv[0]; while ((c = getopt(argc, argv, "cD:dh:P:p:s:tu:")) != -1) { switch (c) { - case 'c': - compat = true; - break; case 'd': descriptions = true; break; @@ -113,9 +110,11 @@ main(int argc, char *argv[]) } } - if (!text && (compat || descriptions)) + if (!text && descriptions) usage(); + initSimStats(); + Scalar s1; Scalar s2; Average s3; @@ -304,7 +303,7 @@ main(int argc, char *argv[]) f4 += s5[3]; f5 = constant(1); - check(); + enable(); reset(); s16[1][0] = 1; @@ -545,10 +544,11 @@ main(int argc, char *argv[]) s12.sample(100); + prepare(); + if (text) { Text out(cout); out.descriptions = descriptions; - out.compat = compat; out(); } -- cgit v1.2.3