- std::cerr << Name << "\n";
-
- Started = false; // Once printed, don't print again
-}
-
-
-void TimerGroup::removeTimer() {
- if (--NumTimers == 0 && !TimersToPrint.empty()) { // Print timing report...
- // Sort the timers in descending order by amount of time taken...
- std::sort(TimersToPrint.begin(), TimersToPrint.end(),
- std::greater<Timer>());
-
- // Figure out how many spaces to indent TimerGroup name...
- unsigned Padding = (80-Name.length())/2;
- if (Padding > 80) Padding = 0; // Don't allow "negative" numbers
-
- ++NumTimers;
- { // Scope to contain Total timer... don't allow total timer to drop us to
- // zero timers...
- Timer Total("TOTAL");
-
- for (unsigned i = 0, e = TimersToPrint.size(); i != e; ++i)
- Total.sum(TimersToPrint[i]);
-
- // Print out timing header...
- std::cerr << "===" << std::string(73, '-') << "===\n"
- << std::string(Padding, ' ') << Name << "\n"
- << "===" << std::string(73, '-')
- << "===\n Total Execution Time: " << std::fixed
- << Total.getProcessTime()
- << " seconds (" << Total.getWallTime() << std::scientific
- << " wall clock)\n\n";
-
- if (Total.UserTime)
- std::cerr << " ---User Time---";
- if (Total.SystemTime)
- std::cerr << " --System Time--";
- if (Total.getProcessTime())
- std::cerr << " --User+System--";
- std::cerr << " ---Wall Time---";
- if (Total.getMemUsed())
- std::cerr << " ---Mem---";
- if (Total.getPeakMem())
- std::cerr << " -PeakMem-";
- std::cerr << " --- Name ---\n";
-
- // Loop through all of the timing data, printing it out...
- for (unsigned i = 0, e = TimersToPrint.size(); i != e; ++i)
- TimersToPrint[i].print(Total);
-
- Total.print(Total);
- std::cerr << std::endl; // Flush output
- }
- --NumTimers;