X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FStatistics.cc;h=445e1c4f6aeed49cb690cebcb197d48223211f89;hb=75428b027ecccf77d5230021bf6b8736c4a6955e;hp=730898d5c38c5b8f47ea078691a1f4cca6fe8799;hpb=af697a0c8591b38f7ee7dbc3d1d0293f4ff72d37;p=senf.git diff --git a/senf/Utils/Statistics.cc b/senf/Utils/Statistics.cc index 730898d..445e1c4 100644 --- a/senf/Utils/Statistics.cc +++ b/senf/Utils/Statistics.cc @@ -86,22 +86,20 @@ senf::StatisticsBase::output(unsigned n) prefix_ void senf::StatisticsBase::consoleList(unsigned level, std::ostream & os) const { - os << boost::format("%s%-5d%|15t| %12s %19.5g %12s\n") - % std::string(2*level,' ') - % rank() - % boost::io::group(std::setw(1),senf::format::eng(min())) - % boost::io::group(std::setw(1),senf::format::eng(avg(),dev())) - % boost::io::group(std::setw(1),senf::format::eng(max())); + namespace fmt = senf::format; + + os << boost::format("%s%-5d%|15t| %12.5g %19.5g %12.5g\n") + % std::string(2*level,' ') % rank() + % fmt::eng(min()).setw() % fmt::eng(avg(),dev()).setw() % fmt::eng(max()).setw(); { OutputMap::const_iterator i (outputs_.begin()); OutputMap::const_iterator i_end (outputs_.end()); for (; i != i_end; ++i) - os << boost::format(" %3d %12s %19.5g %12s\n") + os << boost::format(" %3d %12.5g %19.5g %12.5g\n") % i->second.n - % boost::io::group(std::setw(1),senf::format::eng(i->second.min/i->second.n)) - % boost::io::group(std::setw(1),senf::format::eng(i->second.avg/i->second.n, - i->second.dev/i->second.n)) - % boost::io::group(std::setw(1),senf::format::eng(i->second.max/i->second.n)); + % fmt::eng(i->second.min).setw() + % fmt::eng(i->second.avg, i->second.dev).setw() + % fmt::eng(i->second.max).setw(); } { Children::const_iterator i (children_.begin()); @@ -130,7 +128,11 @@ prefix_ void senf::StatisticsBase::generateOutput() i->second.max += j->max; i->second.dev += j->dev; } - i->second.signal(i->second.min/n, i->second.avg/n, i->second.max/n, i->second.dev/n); + i->second.min /= n; + i->second.avg /= n; + i->second.max /= n; + i->second.dev /= n; + i->second.signal(i->second.min, i->second.avg, i->second.max, i->second.dev); } } @@ -208,7 +210,7 @@ prefix_ senf::Statistics::Statistics() prefix_ void senf::Statistics::consoleList(std::ostream & os) { - os << "RANK WIN MIN AVG MAX\n"; + os << "RANK WIN MIN AVG MAX\n"; StatisticsBase::consoleList(0, os); } @@ -270,7 +272,7 @@ prefix_ void senf::Collector::enter(float min, float avg, float max, float dev) if (max > accMax_) accMax_ = max; if (++i_ >= rank_) { float accAvg (accSum_ / i_); - float accDev (std::sqrt(accSumSq_ / i_ - accAvg*accAvg)); + float accDev (std::max(0.0f,std::sqrt(accSumSq_ / i_ - accAvg*accAvg))); StatisticsBase::enter(accMin_, accAvg, accMax_, accDev); i_ = 0; accMin_ = FLT_MAX;