2 #pragma warning( disable : 4786 ) 45 template <
typename S,
typename T>
63 const IChronoStatSvc::ChronoTag& key = item.first;
73 const IChronoStatSvc::StatTag& key = item.first;
109 ii->addListener(
this, IncidentType::EndEvent );
141 m_ofd << itr.first.substr( 0, itr.first.length() - 8 ) <<
" ";
142 for (
const auto& itt : itr.second ) {
143 m_ofd <<
" " << (
long int)( itt );
159 std::cout << local <<
" The Final CPU consumption (Chrono) Table " 179 for (
auto iter = tmpCont.
begin(); tmpCont.
end() != iter; ++iter ) {
185 const ChronoTag* tag = iter->second;
212 for (
auto iter = tmpCont.
begin(); tmpCont.
end() != iter; ++iter ) {
218 const ChronoTag* tag = iter->second;
245 for (
const auto& i : tmpCont ) {
251 const ChronoTag* tag = i.second;
316 IChronoStatSvc::ChronoType theType )
343 void ChronoStatSvc::stat(
const IChronoStatSvc::StatTag& statTag,
const IChronoStatSvc::StatFlag& statFlag )
355 theStat = &theIter->second;
399 info() <<
"Could not open the output file for writing chrono statistics [" <<
m_statsOutFileName.value() <<
"]" 411 []( ChronoMap::const_reference i ) {
return std::make_pair( &i.second, &i.first ); } );
417 for (
const auto& iter : chronos ) {
424 const ChronoTag* tag = iter.second;
430 out <<
"\n[" << *tag <<
"]\n";
433 out <<
"cpu_user_total = " << entity->
uTotalTime() <<
"\n";
434 out <<
"cpu_user_min = " << entity->
uMinimalTime() <<
"\n";
435 out <<
"cpu_user_mean = " << entity->
uMeanTime() <<
"\n";
436 out <<
"cpu_user_RMS = " << entity->
uRMSTime() <<
"\n";
437 out <<
"cpu_user_max = " << entity->
uMaximalTime() <<
"\n";
442 out <<
"cpu_system_total = " << entity->
kTotalTime() <<
"\n";
443 out <<
"cpu_system_min = " << entity->
kMinimalTime() <<
"\n";
444 out <<
"cpu_system_mean = " << entity->
kMeanTime() <<
"\n";
445 out <<
"cpu_system_RMS = " << entity->
kRMSTime() <<
"\n";
446 out <<
"cpu_system_max = " << entity->
kMaximalTime() <<
"\n";
451 out <<
"cpu_real_total = " << entity->
eTotalTime() <<
"\n";
452 out <<
"cpu_real_min = " << entity->
eMinimalTime() <<
"\n";
453 out <<
"cpu_real_mean = " << entity->
eMeanTime() <<
"\n";
454 out <<
"cpu_real_RMS = " << entity->
eRMSTime() <<
"\n";
455 out <<
"cpu_real_max = " << entity->
eMaximalTime() <<
"\n";
492 []( StatMap::const_reference i ) {
return std::make_pair( &i.second, &i.first ); } );
503 for (
const auto& iter : tmpCont ) {
509 const StatTag* tag = iter.second;
540 if ( itr.first.find(
":Execute" ) == std::string::npos )
continue;
std::string outputElapsedTime() const
print the chrono ;
constexpr static const auto FAILURE
double kMaximalTime() const
maximal measurement for kernel time
Definition of the MsgStream class used to transmit messages.
StatusCode initialize() override
double uMinimalTime() const
minimal measurement for user time
const std::string & name() const override
Retrieve name of the service.
double uTotalTime() const
total user time
ChronoStatus chronoStatus(const IChronoStatSvc::ChronoTag &chronoTag) override
Implementation of IChronoStatSvc::chronoStatus.
Gaudi::Property< std::string > m_header
StatusCode finalize() override
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
StatMap m_statEntities
stat part
a small helper class for implementation of ChronoStatSvc service, It also could be used as some local...
Gaudi::Property< bool > m_statCoutFlag
IChronoStatSvc::ChronoTime chronoDelta(const IChronoStatSvc::ChronoTag &chronoTag, IChronoStatSvc::ChronoType theType) override
Implementation of IchronoStatSvc::chronoDelta.
double kTotalTime() const
total Kernel time
Gaudi::Property< bool > m_chronoOrderFlag
Gaudi::Property< bool > m_printUserTime
void stat(const IChronoStatSvc::StatTag &statTag, const IChronoStatSvc::StatFlag &statFlag) override
Implementation of IChronoStatSvc::stat add statistical information to the entity , tagged by its name.
double uRMSTime() const
r.m.s User Time
double kMinimalTime() const
minimal measurement for kernel time
double eMinimalTime() const
minimal measurement for elapsed time
double kRMSTime() const
r.m.s Kernel Time
void statPrint(const IChronoStatSvc::ChronoTag &statTag) override
prints (using message service) info about statistical entity, tagged by its name
std::string outputSystemTime() const
print the chrono ;
IChronoSvc::ChronoStatus start()
start the current chrono
#define DECLARE_COMPONENT(type)
const ChronoEntity * chrono(const IChronoStatSvc::ChronoTag &t) const override
extract the chrono entity for the given tag (name)
double kMeanTime() const
average Kernel Time
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
double eMeanTime() const
average Elapsed Time
void merge(const ChronoStatSvc &css)
Compound assignment operator.
bool operator()(const std::pair< S *, T * > &p1, const std::pair< S *, T * > &p2) const
Gaudi::Property< bool > m_useEffFormat
void saveStats()
dump the statistics into an ASCII file for offline processing
constexpr struct CompareFirstOfPointerPair_t CompareFirstOfPointerPair
This class is used for returning status codes from appropriate routines.
void clear(STATE_TYPE _i=std::ios_base::failbit)
const ChronoEntity * chronoStop(const IChronoStatSvc::ChronoTag &chronoTag) override
Implementation of IChronoStatSvc::chronoStop.
Gaudi::Property< bool > m_statOrderFlag
double eRMSTime() const
r.m.s Elapsed Time
std::ostream & print(std::ostream &o, bool tableFormat, const std::string &name, bool flag=true, std::string fmtHead="%|-48.48s|%|27t|") const
Gaudi::Property< bool > m_chronoTableFlag
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
StatusCode setProperties()
Method for setting declared properties to the values specified for the job.
constexpr static const auto SUCCESS
MSG::Level m_chronoPrintLevel
level of info printing
StatusCode initialize() override
Implementation of IService::initialize()
Gaudi::Property< bool > m_printEllapsedTime
double uMeanTime() const
average User Time
std::string outputUserTime() const
print the chrono ;
HepRndm::Engine< TripleRand > e2
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
void handle(const Incident &incident) override
T back_inserter(T...args)
Gaudi::Property< bool > m_statTableFlag
double eMaximalTime() const
maximal measurement for elapsed time
Base class for all Incidents (computing events).
ChronoEntity * chronoStart(const IChronoStatSvc::ChronoTag &chronoTag) override
Implementation of IChronoStatSvc::chronoStart.
unsigned long addFlag(const double v)
unsigned long nOfMeasurements() const
number of chrono measurements
Gaudi::Property< std::string > m_statsOutFileName
MSG::Level m_statPrintLevel
level of info printing
Gaudi::Property< bool > m_chronoCoutFlag
backward compatible StatEntity class.
IChronoSvc::ChronoStatus stop()
stop the chrono
double uMaximalTime() const
maximal measurement for user time
double eTotalTime() const
total Elapsed time
void chronoPrint(const IChronoStatSvc::ChronoTag &chronoTag) override
Implementation of IChronoStatSvc::chronoPrint.
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
The interface implemented by the IncidentSvc service.
The Chrono & Stat Sservice: service implements the IChronoStatSvc interface and provides the basic ch...
ChronoMap m_chronoEntities
chrono part
Gaudi::Property< bool > m_printSystemTime
StatusCode finalize() override
Implementation of IService::finalize()
Gaudi::Property< std::string > m_perEventFile