21 string tmp_key( key );
24 while( ( _timers.find(tmp_key) ) != _timers.end() )
28 o << key <<
"_" << version;
33 _timers.insert( pair<string,timer>( tmp_key,
timer( tmp_key, _timer_id ) ) );
37 return _timers.find( tmp_key )->second;
42 string tmp_key( key );
45 while( ( _single_shot_timers.find(tmp_key) ) != _single_shot_timers.end() )
49 o << key <<
"_" << version;
54 _single_shot_timers.insert( pair<string,timer>( tmp_key,
timer( tmp_key, _single_shot_timer_id ) ) );
55 _single_shot_timer_id++;
58 return _single_shot_timers.find( tmp_key )->second;
65 time_iterator _iter = _timers.find( key );
66 if( _iter != _timers.end() )
return _iter->second;
70 what <<
"unknown timer \"" << key <<
"\" requested.";
71 throw invalid_argument(what.str());
79 time_iterator _iter = _single_shot_timers.find( key );
80 if( _iter != _single_shot_timers.end() )
return _iter->second;
84 what <<
"unknown timer \"" << key <<
"\" requested.";
85 throw invalid_argument(what.str());
95 for( const_time_iterator iter = _timers.begin(); iter != _timers.end(); ++iter )
99 sprintf( str,
"%-20s [%2i] - %-6g ms (%s)-.",
100 iter->second.get()->get_name().c_str(),
101 iter->second.get_uid(),
102 iter->second.get()->elapsed(),
103 (
char*)((iter->second.get()->get_state() ==
PHTimer::RUN) ?
" (running)":
" (stopped)")
110 for( const_time_iterator iter = _single_shot_timers.begin(); iter != _single_shot_timers.end(); ++iter ){
112 sprintf( str,
"single_shot - %-20s [%2i] - %-6g ms (%s)-.",
113 iter->second.get()->get_name().c_str(),
114 iter->second.get_uid(),
115 iter->second.get()->elapsed(),
116 (
char*)((iter->second.get()->get_state() ==
PHTimer::RUN) ?
" (running)":
" (stopped)")
131 if( _timers.empty() && _single_shot_timers.empty() )
return;
137 for( const_time_iterator iter = _timers.begin(); iter != _timers.end(); ++iter )
138 if( iter->second.get()->get_ncycle() )
142 sprintf( str,
"%-20s [%2i] - Accumulated time: %-6g ms. cycles: %-10u. Time per cycle: %-6g ms",
143 iter->second.get()->get_name().c_str(),
144 iter->second.get_uid(),
145 iter->second.get()->get_accumulated_time(),
146 iter->second.get()->get_ncycle(),
147 iter->second.get()->get_time_per_cycle() );
154 for( const_time_iterator iter = _single_shot_timers.begin(); iter != _single_shot_timers.end(); ++iter )
155 if( iter->second.get()->get_ncycle() )
159 sprintf( str,
"single_shot - %-20s [%2i] - accumulated: %-6g ms.",
160 iter->second.get()->get_name().c_str(),
161 iter->second.get_uid(),
162 iter->second.get()->get_accumulated_time() );
166 if( iter->second.get()->get_ncycle() != 1 )
167 out <<
" WARNING: single_shot started more than once.";
PHTimer server for accessing external information.
wrapper around PHTimer, for storage in a map
timer insert_new_single_shot(const std::string &)
insert new single_shot timer in map.
timer get_single_shot_timer(const std::string &)
retrieve existing timer. throw exception if not found
void print_stat(std::ostream &out=std::cout) const
dump all registered timer statistics.
timer insert_new(const std::string &)
insert new timer in map.
timer get_timer(const std::string &)
retrieve existing timer. throw exception if not found
void print(std::ostream &out=std::cout) const
dump all registered timer value.
static void PRINT(std::ostream &os=std::cout, const std::string &message="")
print a message (formated) to a stream