The Gaudi Framework  v38r0 (2143aa4c)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TimerForSequencer.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #ifndef TIMERFORSEQUENCER_H
12 
13 # include "GaudiKernel/MsgStream.h"
14 # include "GaudiKernel/Timing.h"
15 # include <inttypes.h>
16 
31 
32 public:
34  TimerForSequencer( std::string name, unsigned int size, double factor )
35  : m_name( std::move( name ) ), m_size( size ), m_factor( factor ) {}
36 
37  ~TimerForSequencer() = default;
38 
40  inline void start() {
43  }
44 
48  uint64_t stop();
49 
51  inline const std::string& name() const { return m_name; }
52 
54  inline double lastTime() const { return m_lastTime * m_factor; }
55 
57  inline double lastCpu() const { return m_lastCpu * m_factor; }
58 
60  inline double elapsedTotal() const { return m_sum * m_factor; }
61 
63  inline double cpuTotal() const { return m_sumCpu * m_factor; }
64 
66  inline uint64_t count() const { return m_num; }
67 
69  MsgStream& fillStream( MsgStream& s ) const;
70 
72  static std::string header( std::string::size_type size );
73 
74 private:
76  unsigned int m_size;
77  double m_factor;
78  uint64_t m_startClock = 0ULL;
79  uint64_t m_startCpu = 0ULL;
80 
81  uint64_t m_num = 0ULL;
82  uint64_t m_lastTime = 0ULL;
83  uint64_t m_lastCpu = 0ULL;
84  uint64_t m_min = 0ULL;
85  uint64_t m_max = 0ULL;
86  uint64_t m_sum = 0ULL;
87  uint64_t m_sum2 = 0ULL;
88  uint64_t m_sumCpu = 0ULL;
89 };
90 
91 inline MsgStream& operator<<( MsgStream& ms, const TimerForSequencer& count ) { return count.fillStream( ms ); }
92 
93 #endif // TIMERFORSEQUENCER_H
TimerForSequencer::m_lastCpu
uint64_t m_lastCpu
Definition: TimerForSequencer.h:83
TimerForSequencer::name
const std::string & name() const
returns the name
Definition: TimerForSequencer.h:51
std::string
STL class.
TimerForSequencer::lastCpu
double lastCpu() const
returns the last measured time
Definition: TimerForSequencer.h:57
details::size
constexpr auto size(const T &, Args &&...) noexcept
Definition: AnyDataWrapper.h:22
TimerForSequencer::m_lastTime
uint64_t m_lastTime
Definition: TimerForSequencer.h:82
gaudirun.s
string s
Definition: gaudirun.py:346
TimerForSequencer::m_name
std::string m_name
Definition: TimerForSequencer.h:75
TimerForSequencer::m_startClock
uint64_t m_startClock
Definition: TimerForSequencer.h:78
TimerForSequencer::cpuTotal
double cpuTotal() const
returns the toptal cpu time
Definition: TimerForSequencer.h:63
System::microSec
@ microSec
Definition: Timing.h:67
TimerForSequencer::m_min
uint64_t m_min
Definition: TimerForSequencer.h:84
TimerForSequencer::m_size
unsigned int m_size
Definition: TimerForSequencer.h:76
Gaudi::Units::ms
constexpr double ms
Definition: SystemOfUnits.h:154
operator<<
MsgStream & operator<<(MsgStream &ms, const TimerForSequencer &count)
Definition: TimerForSequencer.h:91
TimerForSequencer::elapsedTotal
double elapsedTotal() const
returns the total elapsed time
Definition: TimerForSequencer.h:60
TimerForSequencer::m_factor
double m_factor
Definition: TimerForSequencer.h:77
TimerForSequencer::stop
uint64_t stop()
Stop time measurement and return the last elapsed time.
Definition: TimerForSequencer.cpp:20
TimerForSequencer::TimerForSequencer
TimerForSequencer(std::string name, unsigned int size, double factor)
Constructor.
Definition: TimerForSequencer.h:34
TimerForSequencer::start
void start()
Start a time measurement.
Definition: TimerForSequencer.h:40
TimerForSequencer
Auxiliary class.
Definition: TimerForSequencer.h:30
TimerForSequencer::m_sum
uint64_t m_sum
Definition: TimerForSequencer.h:86
System::currentTime
GAUDI_API long long currentTime()
Retrieve absolute system time.
Definition: Timing.h:260
MsgStream
Definition: MsgStream.h:34
TimerForSequencer::~TimerForSequencer
~TimerForSequencer()=default
System::cpuTime
GAUDI_API long long cpuTime(TimeType typ=milliSec, InfoType fetch=Times, long pid=-1)
Consumed CPU time of process in milliseconds.
Definition: Timing.cpp:197
Timing.h
TimerForSequencer::m_sum2
uint64_t m_sum2
Definition: TimerForSequencer.h:87
TimerForSequencer::fillStream
MsgStream & fillStream(MsgStream &s) const
Write measured time into the message stream.
Definition: TimerForSequencer.cpp:44
TimerForSequencer::m_sumCpu
uint64_t m_sumCpu
Definition: TimerForSequencer.h:88
TimerForSequencer::m_startCpu
uint64_t m_startCpu
Definition: TimerForSequencer.h:79
std
STL namespace.
TimerForSequencer::m_num
uint64_t m_num
Definition: TimerForSequencer.h:81
TimerForSequencer::m_max
uint64_t m_max
Definition: TimerForSequencer.h:85
TimerForSequencer::header
static std::string header(std::string::size_type size)
header matching the previous format
Definition: TimerForSequencer.cpp:70
TimerForSequencer::lastTime
double lastTime() const
returns the last measured time
Definition: TimerForSequencer.h:54
TimerForSequencer::count
uint64_t count() const
Returns the number run count.
Definition: TimerForSequencer.h:66
MsgStream.h