Jpp  19.0.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Attributes | Static Private Member Functions | Private Attributes | Friends | List of all members
JEEP::JTimer Class Reference

Auxiliary class for CPU timing and usage. More...

#include <JTimer.hh>

Inheritance diagram for JEEP::JTimer:
JLANG::JTitle

Public Types

enum  JStatus_t { CLK_STOPPED = 0, CLK_RUNNING = 1 }
 Status of clock. More...
 
typedef unsigned long long ull
 

Public Member Functions

 JTimer ()
 Default constructor. More...
 
 JTimer (const JTitle &title)
 Constructor. More...
 
void reset ()
 Reset timer. More...
 
void start ()
 Start timer. More...
 
void stop ()
 Stop timer. More...
 
unsigned int timing_get_cpu_percentage () const
 Get CPU usage. More...
 
void print (std::ostream &out, const JScale_t scale=milli_t) const
 Print timer data. More...
 
void print (std::ostream &out, const bool normalise, const JScale_t scale=milli_t) const
 Print timer data. More...
 
void print (std::ostream &out, const double factor, const JScale_t scale=milli_t) const
 Print timer data. More...
 
const std::string & getTitle () const
 Get title. More...
 
void setTitle (const std::string &title)
 Set title. More...
 

Static Public Member Functions

static void enable ()
 Enable timers. More...
 
static void disable ()
 Disable timers. More...
 
static unsigned long long timeval_to_usec (const struct timeval &tv)
 Convert timeval to micro-seconds. More...
 

Public Attributes

unsigned long long usec_wall
 
unsigned long long usec_ucpu
 
unsigned long long usec_scpu
 
unsigned long long counter
 

Protected Attributes

JStatus_t status
 
std::string title
 

Static Private Member Functions

static bool & get_status ()
 Get status. More...
 

Private Attributes

struct timeval tv
 
struct rusage usage
 

Friends

std::ostream & operator<< (std::ostream &out, const JTimer &timer)
 Print timer data. More...
 

Detailed Description

Auxiliary class for CPU timing and usage.

Definition at line 31 of file JTimer.hh.

Member Typedef Documentation

typedef unsigned long long JEEP::JTimer::ull

Definition at line 36 of file JTimer.hh.

Member Enumeration Documentation

Status of clock.

Enumerator
CLK_STOPPED 
CLK_RUNNING 

Definition at line 41 of file JTimer.hh.

Constructor & Destructor Documentation

JEEP::JTimer::JTimer ( )
inline

Default constructor.

Definition at line 47 of file JTimer.hh.

47  :
48  JTitle(),
49  usec_wall(0ULL),
50  usec_ucpu(0ULL),
51  usec_scpu(0ULL),
52  counter (0ULL),
54  {}
JStatus_t status
Definition: JTimer.hh:243
unsigned long long usec_ucpu
Definition: JTimer.hh:238
unsigned long long usec_scpu
Definition: JTimer.hh:239
JTitle()
Default constructor.
Definition: JTitle.hh:24
unsigned long long counter
Definition: JTimer.hh:240
unsigned long long usec_wall
Definition: JTimer.hh:237
JEEP::JTimer::JTimer ( const JTitle title)
inline

Constructor.

Parameters
titletitle

Definition at line 62 of file JTimer.hh.

62  :
63  JTitle(title),
64  usec_wall(0ULL),
65  usec_ucpu(0ULL),
66  usec_scpu(0ULL),
67  counter (0ULL),
69  {}
JStatus_t status
Definition: JTimer.hh:243
unsigned long long usec_ucpu
Definition: JTimer.hh:238
unsigned long long usec_scpu
Definition: JTimer.hh:239
JTitle()
Default constructor.
Definition: JTitle.hh:24
unsigned long long counter
Definition: JTimer.hh:240
std::string title
Definition: JTitle.hh:73
unsigned long long usec_wall
Definition: JTimer.hh:237

Member Function Documentation

static void JEEP::JTimer::enable ( )
inlinestatic

Enable timers.

Definition at line 75 of file JTimer.hh.

76  {
77  get_status() = true;
78  }
static bool & get_status()
Get status.
Definition: JTimer.hh:254
static void JEEP::JTimer::disable ( )
inlinestatic

Disable timers.

Definition at line 84 of file JTimer.hh.

85  {
86  get_status() = false;
87  }
static bool & get_status()
Get status.
Definition: JTimer.hh:254
void JEEP::JTimer::reset ( )
inline

Reset timer.

Definition at line 93 of file JTimer.hh.

94  {
95  usec_wall = 0;
96  usec_ucpu = 0;
97  usec_scpu = 0;
98  counter = 0;
100  }
JStatus_t status
Definition: JTimer.hh:243
unsigned long long usec_ucpu
Definition: JTimer.hh:238
unsigned long long usec_scpu
Definition: JTimer.hh:239
unsigned long long counter
Definition: JTimer.hh:240
unsigned long long usec_wall
Definition: JTimer.hh:237
void JEEP::JTimer::start ( )
inline

Start timer.

Definition at line 106 of file JTimer.hh.

107  {
108  if (status == CLK_STOPPED && get_status()) {
109 
110  gettimeofday(&tv, NULL);
111  getrusage(RUSAGE_SELF, &usage);
112 
114  usec_ucpu -= timeval_to_usec(usage.ru_utime);
115  usec_scpu -= timeval_to_usec(usage.ru_stime);
116 
118 
119  ++counter;
120  }
121  }
JStatus_t status
Definition: JTimer.hh:243
unsigned long long usec_ucpu
Definition: JTimer.hh:238
unsigned long long usec_scpu
Definition: JTimer.hh:239
struct rusage usage
Definition: JTimer.hh:247
unsigned long long counter
Definition: JTimer.hh:240
struct timeval tv
Definition: JTimer.hh:246
static unsigned long long timeval_to_usec(const struct timeval &tv)
Convert timeval to micro-seconds.
Definition: JTimer.hh:160
static bool & get_status()
Get status.
Definition: JTimer.hh:254
unsigned long long usec_wall
Definition: JTimer.hh:237
void JEEP::JTimer::stop ( )
inline

Stop timer.

Definition at line 127 of file JTimer.hh.

128  {
129  if (status == CLK_RUNNING && get_status()) {
130 
131  gettimeofday(&tv, NULL);
132  getrusage(RUSAGE_SELF, &usage);
133 
135  usec_ucpu += timeval_to_usec(usage.ru_utime);
136  usec_scpu += timeval_to_usec(usage.ru_stime);
137  }
138 
140  }
JStatus_t status
Definition: JTimer.hh:243
unsigned long long usec_ucpu
Definition: JTimer.hh:238
unsigned long long usec_scpu
Definition: JTimer.hh:239
struct rusage usage
Definition: JTimer.hh:247
struct timeval tv
Definition: JTimer.hh:246
static unsigned long long timeval_to_usec(const struct timeval &tv)
Convert timeval to micro-seconds.
Definition: JTimer.hh:160
static bool & get_status()
Get status.
Definition: JTimer.hh:254
unsigned long long usec_wall
Definition: JTimer.hh:237
unsigned int JEEP::JTimer::timing_get_cpu_percentage ( ) const
inline

Get CPU usage.

Returns
CPU usage [%]

Definition at line 148 of file JTimer.hh.

149  {
150  return (100ULL * (usec_ucpu + usec_scpu) / (usec_wall+1));
151  }
unsigned long long usec_ucpu
Definition: JTimer.hh:238
unsigned long long usec_scpu
Definition: JTimer.hh:239
unsigned long long usec_wall
Definition: JTimer.hh:237
static unsigned long long JEEP::JTimer::timeval_to_usec ( const struct timeval &  tv)
inlinestatic

Convert timeval to micro-seconds.

Parameters
tvtimeval
Returns
time [us]

Definition at line 160 of file JTimer.hh.

161  {
162  return (unsigned long long) tv.tv_sec * 1000000ULL + (unsigned long long) tv.tv_usec;
163  }
struct timeval tv
Definition: JTimer.hh:246
void JEEP::JTimer::print ( std::ostream &  out,
const JScale_t  scale = milli_t 
) const
inline

Print timer data.

Parameters
outoutput stream
scalescale

Definition at line 172 of file JTimer.hh.

173  {
174  print(out, 1.0, scale);
175  }
void print(std::ostream &out, const JScale_t scale=milli_t) const
Print timer data.
Definition: JTimer.hh:172
void scale(vector< double > &v, double c)
scale vector content
void JEEP::JTimer::print ( std::ostream &  out,
const bool  normalise,
const JScale_t  scale = milli_t 
) const
inline

Print timer data.

Parameters
outoutput stream
normalisenormalise to number of starts
scalescale

Definition at line 185 of file JTimer.hh.

186  {
187  double factor = 1.0;
188 
189  if (normalise && counter != 0) {
190  factor = 1.0 / (double) counter;
191  }
192 
193  print(out, factor, scale);
194  }
void print(std::ostream &out, const JScale_t scale=milli_t) const
Print timer data.
Definition: JTimer.hh:172
unsigned long long counter
Definition: JTimer.hh:240
void scale(vector< double > &v, double c)
scale vector content
void JEEP::JTimer::print ( std::ostream &  out,
const double  factor,
const JScale_t  scale = milli_t 
) const
inline

Print timer data.

Parameters
outoutput stream
factormultiplication factor
scalescale

Definition at line 204 of file JTimer.hh.

205  {
206  using namespace std;
207 
208  if (get_status()) {
209 
210  const double y = factor * 1e-3 * getValue(milli_t) / getValue(scale);
211  const char* u = getUnit(scale);
212 
213  out << getTitle() << endl;
214  out << FIXED(10,3) << usec_wall * y << " " << u << "s elapsed" << endl;
215  out << FIXED(10,3) << usec_ucpu * y << " " << u << "s user" << endl;
216  out << FIXED(10,3) << usec_scpu * y << " " << u << "s system" << endl;
217  out << setw( 3) << timing_get_cpu_percentage() << "%CPU" << endl;
218  }
219  }
double getValue(const JScale_t scale)
Get numerical value corresponding to scale.
Definition: JScale.hh:47
unsigned int timing_get_cpu_percentage() const
Get CPU usage.
Definition: JTimer.hh:148
unsigned long long usec_ucpu
Definition: JTimer.hh:238
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
const std::string & getTitle() const
Get title.
Definition: JTitle.hh:55
unsigned long long usec_scpu
Definition: JTimer.hh:239
milli
Definition: JScale.hh:30
const char * getUnit(const int scale)
Get textual unit corresponding to scale.
Definition: JScale.hh:59
double u[N+1]
Definition: JPolint.hh:865
static bool & get_status()
Get status.
Definition: JTimer.hh:254
unsigned long long usec_wall
Definition: JTimer.hh:237
void scale(vector< double > &v, double c)
scale vector content
static bool& JEEP::JTimer::get_status ( )
inlinestaticprivate

Get status.

Returns
status

Definition at line 254 of file JTimer.hh.

255  {
256  static bool status = true;
257 
258  return status;
259  }
JStatus_t status
Definition: JTimer.hh:243
const std::string& JLANG::JTitle::getTitle ( ) const
inlineinherited

Get title.

Returns
title

Definition at line 55 of file JTitle.hh.

56  {
57  return this->title;
58  }
std::string title
Definition: JTitle.hh:73
void JLANG::JTitle::setTitle ( const std::string &  title)
inlineinherited

Set title.

Parameters
titletitle

Definition at line 66 of file JTitle.hh.

67  {
68  this->title = title;
69  }
std::string title
Definition: JTitle.hh:73

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  out,
const JTimer timer 
)
friend

Print timer data.

Parameters
outoutput stream
timertimer
Returns
output stream

Definition at line 229 of file JTimer.hh.

230  {
231  timer.print(out);
232 
233  return out;
234  }
void print(std::ostream &out, const JScale_t scale=milli_t) const
Print timer data.
Definition: JTimer.hh:172

Member Data Documentation

unsigned long long JEEP::JTimer::usec_wall

Definition at line 237 of file JTimer.hh.

unsigned long long JEEP::JTimer::usec_ucpu

Definition at line 238 of file JTimer.hh.

unsigned long long JEEP::JTimer::usec_scpu

Definition at line 239 of file JTimer.hh.

unsigned long long JEEP::JTimer::counter

Definition at line 240 of file JTimer.hh.

JStatus_t JEEP::JTimer::status
protected

Definition at line 243 of file JTimer.hh.

struct timeval JEEP::JTimer::tv
private

Definition at line 246 of file JTimer.hh.

struct rusage JEEP::JTimer::usage
private

Definition at line 247 of file JTimer.hh.

std::string JLANG::JTitle::title
protectedinherited

Definition at line 73 of file JTitle.hh.


The documentation for this class was generated from the following file: