stats: cleanup a few small problems in stats
authorNathan Binkert <nate@binkert.org>
Wed, 21 Jul 2010 22:53:53 +0000 (15:53 -0700)
committerNathan Binkert <nate@binkert.org>
Wed, 21 Jul 2010 22:53:53 +0000 (15:53 -0700)
src/base/statistics.hh
src/base/stats/text.cc
src/unittest/stattest.cc

index 37bb1b90b8215793c0811404085025f85f7266d5..5fca376e36dfa5393a6ecc26e622b6fee29d7d46 100644 (file)
@@ -401,7 +401,7 @@ class DataWrapVec2d : public DataWrapVec<Derived, InfoProxyType>
     }
 
     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<Derived, InfoProxyType>
         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<Derived, Vector2dInfoProxy>
         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<Derived, VectorDistInfoProxy>
     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 <class Derived, class Stor>
-inline typename VectorDistBase<Derived, Stor>::Proxy
-VectorDistBase<Derived, Stor>::operator[](off_type index)
-{
-    assert (index >= 0 && index < size());
-    typedef typename VectorDistBase<Derived, Stor>::Proxy Proxy;
-    return Proxy(this->self(), index);
-}
-*/
-
-#if 0
-template <class Storage>
-Result
-VectorDistBase<Storage>::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>
      */
     StandardDeviation()
     {
+        SampleStor::Params *params = new SampleStor::Params;
         this->doInit();
+        this->setParams(params);
     }
 };
 
@@ -2307,7 +2290,9 @@ class AverageDeviation : public DistBase<AverageDeviation, AvgSampleStor>
      */
     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();
     }
 };
index f3c4d1c58bc9b61463f8cf1e3db9ef3bc1a23382..87bb05323e5e5a19778ab71db6bd71528b7a7a91 100644 (file)
@@ -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
index 9c10d078c8e72cbe60b58169365315899b236dcf..7c7b116a8e51d97d6f993f720e320ddd03dbaacc 100644 (file)
@@ -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();
     }