Пример #1
0
    void stars() {
	os<<"Global Statistics:\n";
	os<<endl;

	// Find all stages
	size_t maxWidth = 0;
	typedef multimap<string,const V3Statistic*> ByName;
	ByName byName;
	// * is always first
	for (StatColl::iterator it = s_allStats.begin(); it!=s_allStats.end(); ++it) {
	    const V3Statistic* repp = &(*it);
	    if (repp->stage() == "*" && repp->printit()) {
		if (maxWidth < repp->name().length()) maxWidth = repp->name().length();
		byName.insert(make_pair(repp->name(), repp));
	    }
	}

	// Print organized by stage
	for (ByName::iterator it = byName.begin(); it!=byName.end(); ++it) {
	    const V3Statistic* repp = it->second;
	    os<<"  "<<left<<setw(maxWidth)<<repp->name();
	    repp->dump(os);
	    os<<endl;
	}
	os<<endl;
    }
Пример #2
0
    void sumit() {
	// If sumit is set on a statistic, combine with others of same name
        typedef std::multimap<string,V3Statistic*> ByName;
	ByName byName;
	// * is always first
	for (StatColl::iterator it = s_allStats.begin(); it!=s_allStats.end(); ++it) {
	    V3Statistic* repp = &(*it);
	    byName.insert(make_pair(repp->name(), repp));
	}

	// Process duplicates
	V3Statistic* lastp = NULL;
	for (ByName::iterator it = byName.begin(); it!=byName.end(); ++it) {
	    V3Statistic* repp = it->second;
	    if (lastp && lastp->sumit() && lastp->printit()
		&& lastp->name() == repp->name() && lastp->stage() == repp->stage()) {
		repp->combineWith(lastp);
	    }
	    lastp = repp;
	}
    }
Пример #3
0
    void stages() {
	os<<"Stage Statistics:\n";

	// Find all stages
	int stage=0;
	size_t maxWidth = 0;
        typedef std::vector<string> Stages;
	Stages stages;
	vl_unordered_map<string,int> stageInt;
        typedef std::multimap<string,const V3Statistic*> ByName;
	ByName byName;
	// * is always first
	for (StatColl::iterator it = s_allStats.begin(); it!=s_allStats.end(); ++it) {
	    const V3Statistic* repp = &(*it);
	    if (repp->stage() != "*" && repp->printit()) {
		if (maxWidth < repp->name().length()) maxWidth = repp->name().length();
		if (stageInt.find(repp->stage()) == stageInt.end()) {
		    stageInt.insert(make_pair(repp->stage(), stage++));
		    stages.push_back(repp->stage());
		}
		byName.insert(make_pair(repp->name(), repp));
	    }
	}

	// Header
        os<<"  Stat     "<<std::left<<std::setw(maxWidth-5-2)<<"";
	for (Stages::iterator it = stages.begin(); it!=stages.end(); ++it) {
            os<<"  "<<std::left<<std::setw(9)<<*it;
	}
	os<<endl;
        os<<"  -------- "<<std::left<<std::setw(maxWidth-5-2)<<"";
	for (Stages::iterator it = stages.begin(); it!=stages.end(); ++it) {
            os<<"  "<<std::left<<std::setw(9)<<"-------";
	}
	//os<<endl;

	// Print organized by stage
	string lastName = "__NONE__";
	string lastCommaName = "__NONE__";
	unsigned col=0;
	for (ByName::iterator it = byName.begin(); it!=byName.end(); ++it) {
	    const V3Statistic* repp = it->second;
	    if (lastName != repp->name()) {
		lastName = repp->name();
		{
		    string commaName = lastName;
		    string::size_type pos;
		    if ((pos=commaName.find(",")) != string::npos) {
			commaName.erase(pos);
		    }
		    if (lastCommaName != commaName) {
			lastCommaName = commaName;
			os<<endl;
		    }
		}
		os<<endl;
		col = 0;
                os<<"  "<<std::left<<std::setw(maxWidth)<<repp->name();
	    }
	    while (col<stages.size() && stages.at(col) != repp->stage()) {
                os<<std::setw(11)<<"";
		col++;
	    }
	    repp->dump(os);
	    col++;
	}
	os<<endl;
    }