Loading...
Searching...
No Matches
casacore::PrecTimer Class Reference
casa package (libcasa_casa) » OS_module

More...

`#include <PrecTimer.h>`

## Classes

struct | TimeStruct
union | Union1
struct | Union2

## Public Member Functions

| PrecTimer ()
| Construct.
| ~PrecTimer ()
| Destruct.
void | start ()
| Restart the timer.
void | stop ()
| Stop the timer.
void | reset ()
| Reset the timer to zero.
void | show () const
| Show real time on cout or a user supplied stream.
void | show (std::ostream &os) const
void | show (const String &) const
| Show real time on cout or a user supplied stream preceeded by the string parameter.
void | show (std::ostream &os, const String &prefix) const
double | getReal () const
| Get the real time (in seconds).
unsigned long long | getCount () const
| Get the total number of times start/stop is done.

## Private Member Functions

void | print_time (std::ostream &, double time) const

## Static Private Member Functions

static double | get_CPU_speed_in_MHz ()

## Private Attributes

Union1 | u1
Union2 | u2

## Static Private Attributes

static double | CPU_speed_in_MHz

## Detailed Description

Precision timer to measure elapsed times in a cumulative way

### Intended use:

Public interface

### Review Status

Test programs:
  tPrecTimer

### Synopsis

The PrecTimer supplements the Timer class. If offers a low-overhead and high-resolution interval timer for use on i386, x86_64, ia64, and powerpc platforms, using the processor's timestamp counter that is incremented each cycle. Put timer.start() and timer.stop() calls around the piece of code to be timed. Because the timer is cumulative, the total time of a particular piece of code can be timed.
Caution: Make sure that start() and stop() calls alternate, otherwise very strange times will be the result;

A timer can be started and stopped multiple times; both the average and total time, as well as the number of iterations are printed. The measured time is real time (as opposed to user or system time). The timer can be used to measure from 10 nanosecond to a century interval.

Multiple timers can be used in a nested way as long as each of them has independent (matching) start and stop calls.

The class is more or less a copy of the original written by John Romein at ASTRON, Dwingeloo, the Netherlands.

### Example

Here's how to create a timer, start it (the 'mark' member function) and display a breakdown.

PrecTimer ttimer; // the timer is reset at construction time
PrecTimer ctimer;
ttimer.reset(); // if you want to reset the timer (not needed here)
ttimer.start(); // start the total timer
for (int i=0; i<n; ++i) {
... do something..\.
ctimer.start(); // start the calc timer
...do some calculation which will be timed..\.
ctimer.stop(); // and stop it
}
ttimer.stop();
ttimer.show (cout, "Total ");
ctimer.show (cout, "Calculations");
casacore::PrecTimer::reset
void reset()
Reset the timer to zero.
Definition PrecTimer.h:172
casacore::PrecTimer::start
void start()
Restart the timer.
Definition PrecTimer.h:192
casacore::PrecTimer::PrecTimer
PrecTimer()
Construct.
Definition PrecTimer.h:183
casacore::PrecTimer::stop
void stop()
Stop the timer.
Definition PrecTimer.h:266
casacore::PrecTimer::show
void show() const
Show real time on cout or a user supplied stream.

Definition at line 99 of file PrecTimer.h.

## Constructor & Destructor Documentation

## PrecTimer()

casacore::PrecTimer::PrecTimer | ( |  | ) |

inline

Construct.

Definition at line 183 of file PrecTimer.h.

References reset().

## ~PrecTimer()

casacore::PrecTimer::~PrecTimer | ( |  | ) |

inline

Destruct.

Definition at line 188 of file PrecTimer.h.

## Member Function Documentation

## get_CPU_speed_in_MHz()

double casacore::PrecTimer::get_CPU_speed_in_MHz | ( |  | ) |

static private

## getCount()

unsigned long long casacore::PrecTimer::getCount | ( |  | ) | const

inline

Get the total number of times start/stop is done.

Definition at line 178 of file PrecTimer.h.

References u2.

## getReal()

double casacore::PrecTimer::getReal | ( |  | ) | const

Get the real time (in seconds).

## print_time()

void casacore::PrecTimer::print_time | ( | std::ostream & | ,
|  | double | time ) const

private

References casacore::time().

## reset()

void casacore::PrecTimer::reset | ( |  | ) |

inline

Reset the timer to zero.

Definition at line 172 of file PrecTimer.h.

References u1, and u2.

Referenced by PrecTimer().

## show() [1/4]

void casacore::PrecTimer::show | ( |  | ) | const

Show real time on cout or a user supplied stream.

## show() [2/4]

void casacore::PrecTimer::show | ( | const String & |  | ) | const

Show real time on cout or a user supplied stream preceeded by the string parameter.

## show() [3/4]

void casacore::PrecTimer::show | ( | std::ostream & | os | ) | const

## show() [4/4]

void casacore::PrecTimer::show | ( | std::ostream & | os,
|  | const String & | prefix ) const

## start()

void casacore::PrecTimer::start | ( |  | ) |

inline

Restart the timer.

Definition at line 192 of file PrecTimer.h.

References casacore::time(), and u1.

## stop()

void casacore::PrecTimer::stop | ( |  | ) |

inline

Stop the timer.

Definition at line 266 of file PrecTimer.h.

References casacore::time(), u1, and u2.

## Member Data Documentation

## CPU_speed_in_MHz

double casacore::PrecTimer::CPU_speed_in_MHz

static private

Definition at line 166 of file PrecTimer.h.

## u1

Union1 casacore::PrecTimer::u1

private

Definition at line 163 of file PrecTimer.h.

Referenced by reset(), start(), and stop().

## u2

Union2 casacore::PrecTimer::u2

private

Definition at line 164 of file PrecTimer.h.

Referenced by getCount(), reset(), and stop().

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

- casa/OS/PrecTimer.h