OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Statistics.h
Go to the documentation of this file.
1 #ifndef __STATISTICS_H__
2 #define __STATISTICS_H__
3 
4 #include <map>
5 #include <string>
6 #include <iostream>
7 
8 template<typename T>
9 class Statistics {
10 
11 public:
12 
13  Statistics(std::string name) : stat_name_(name) {}
15 
16  void registerStatistic(std::string name, T initial_value = 0) {
17  std::pair<statistics_iterator_t, bool> statistic_position;
18  statistic_position = statistics_.insert(std::pair<std::string, T>(name, initial_value));
19 
20  if(statistic_position.second == false)
21  std::cout << "Statistic " << statistic_position.first->second << " already exists!" << std::endl;
22  }
23 
24  void changeStatisticBy(std::string name, T change_by_value) {
25  statistics_iterator_t name_at;
26  name_at = statistics_.find(name);
27 
28  if(name_at != statistics_.end())
29  statistics_[name] += change_by_value;
30  else
31  std::cout << "Statistic " << name << " not registered!" << std::endl;
32  }
33 
34  T getStatisticValue(std::string name) {
35  return statistics_[name];
36  }
37 
38  void dumpStatistics() {
39  std::cout << "Statistics: " << stat_name_ << std::endl;
40 
41  T sum = 0;
42  for(std::pair<std::string, T> stat : statistics_) {
43  sum += stat.second;
44  std::cout << "\t" << stat.first << " = " << stat.second << std::endl;
45  }
46 
47  std::cout << "_________________________" << std::endl;
48  std::cout << "Total: " << sum << std::endl;
49  }
50 
51  void dumpStatistics(std::ostringstream &stream) {
52  stream << "Statistics: " << stat_name_ << std::endl;
53 
54  T sum = 0;
55  for (std::pair<std::string, T> stat : statistics_) {
56  sum += stat.second;
57  stream << "\t" << stat.first << " = " << stat.second << std::endl;
58  }
59 
60  stream << "_________________________" << std::endl;
61  stream << "Total: " << sum << std::endl;
62  }
63 
64 
65 private:
66 
67  typedef typename std::map<std::string, T> statistics_t;
69 
71  std::string stat_name_;
72 
73 };
74 
75 #endif
void dumpStatistics(std::ostringstream &stream)
Definition: Statistics.h:51
void changeStatisticBy(std::string name, T change_by_value)
Definition: Statistics.h:24
std::string stat_name_
Definition: Statistics.h:71
Definition: rbendmap.h:8
Statistics(std::string name)
Definition: Statistics.h:13
statistics_t statistics_
Definition: Statistics.h:70
void registerStatistic(std::string name, T initial_value=0)
Definition: Statistics.h:16
T::PETE_Expr_t::PETE_Return_t sum(const PETE_Expr< T > &expr)
Definition: PETE.h:1213
void dumpStatistics()
Definition: Statistics.h:38
std::map< std::string, T >::iterator statistics_iterator_t
Definition: Statistics.h:68
std::map< std::string, T > statistics_t
Definition: Statistics.h:67
const std::string name
T getStatisticValue(std::string name)
Definition: Statistics.h:34
std::string::iterator iterator
Definition: MSLang.h:16
Inform & endl(Inform &inf)
Definition: Inform.cpp:42