32 #ifndef GRAPHCHI_BASIC_REPORTER
33 #define GRAPHCHI_BASIC_REPORTER
47 class basic_reporter :
public imetrics_reporter {
50 virtual ~basic_reporter() {}
51 virtual void do_report(std::string name, std::string ident, std::map<std::string, metrics_entry> & entries) {
54 std::cout << std::endl <<
" === REPORT FOR " << name <<
"(" << ident <<
") ===" << std::endl;
56 std::cout << std::endl <<
" === REPORT FOR " << name <<
" ===" << std::endl;
60 for(
int round=0; round<4; round++) {
61 std::map<std::string, metrics_entry>::iterator it;
64 for(it = entries.begin(); it != entries.end(); ++it) {
65 metrics_entry ent = it->second;
70 if (c++ == 0) std::cout <<
"[Numeric]" << std::endl;
71 std::cout << it->first <<
":\t\t";
73 std::cout << ent.value <<
"\t(count: " << ent.count <<
", min: " << ent.minvalue <<
74 ", max: " << ent.maxvalue <<
", avg: "
75 << ent.cumvalue/(double)ent.count <<
")" << std::endl;
77 std::cout << ent.value << std::endl;
83 if (c++ == 0) std::cout <<
"[Timings]" << std::endl;
84 std::cout << it->first <<
":\t\t";
86 std::cout << ent.value <<
"s\t (count: " << ent.count <<
", min: " << ent.minvalue <<
87 "s, " <<
"max: " << ent.maxvalue <<
", avg: "
88 << ent.cumvalue/(double)ent.count <<
"s)" << std::endl;
90 std::cout << ent.value <<
" s" << std::endl;
96 if (c++ == 0) std::cout <<
"[Other]" << std::endl;
97 std::cout << it->first <<
":\t";
98 std::cout << ent.stringval << std::endl;
103 if (c++ == 0) std::cout <<
"[Numeric]" << std::endl;
104 std::cout << it->first <<
":\t\t";
106 std::cout << ent.value <<
"\t(count: " << ent.count <<
", min: " << ent.minvalue <<
107 ", max: " << ent.maxvalue <<
", avg: "
108 << ent.cumvalue/(double)ent.count <<
")" << std::endl;
110 std::cout << ent.value << std::endl;
112 std::cout << it->first <<
".values:\t\t";
113 for(
size_t j=0; j<ent.v.size(); j++) std::cout << ent.v[j] <<
",";
114 std::cout << std::endl;