Timer Class Reference
[Utility functions and classes]

List of all members.

Public Member Functions

 Timer ()
 Timer (MPI_Comm mpi_communicator)
void start ()
double stop ()
void reset ()
double operator() () const
double wall_time () const

Private Attributes

double start_time
double start_time_children
double start_wall_time
double cumulative_time
double cumulative_wall_time
bool running
MPI_Comm mpi_communicator


Detailed Description

This is a very simple class which provides information about both the CPU time and the wallclock time elapsed since the timer was started last time. Information is retrieved from the system on the basis of clock cycles since last time the computer was booted for the CPU time. On a SUN workstation, this information is exact to about a microsecond.

Usage

Use of this class is as you might expect by looking at the member functions:

   Time timer;
   timer.start ();

   // do some complicated computations here
   ...

   timer.stop ();

   std::cout << "Elapsed CPU time: " << timer() << " seconds.";
   std::cout << "Elapsed wall time: " << timer.wall_time() << " seconds.";

   // reset timer for the next thing it shall do
   timer.reset();

Alternatively, you can also restart the timer instead of resetting it. The times between successive calls to start()/ stop() will then be accumulated. The usage of this class is also explained in the step-12 and step-29 tutorial programs.

Note:
Implementation of this class is system dependent. Unfortunately, it does not work with multithreading right now. In this case, we would like to sum up the time needed by all children.
Author:
G. Kanschat, W. Bangerth

Constructor & Destructor Documentation

Timer::Timer (  ) 

Constructor. Starts the timer at 0 sec.

Timer::Timer ( MPI_Comm  mpi_communicator  ) 

Constructor that takes an MPI communicator as input. A timer constructed this way will sum up the CPU times over all processors in the MPI network when requested by the operator ().

Starts the timer at 0 sec.

This constructor is only available if the deal.II compiler is an MPI compiler.


Member Function Documentation

void Timer::start (  ) 

Re-start the timer at the point where it was stopped. This way a cumulative measurement of time is possible.

double Timer::stop (  ) 

Sets the current time as next starting time and return the elapsed time in seconds.

void Timer::reset (  ) 

Stop the timer if necessary and reset the elapsed time to zero.

double Timer::operator() (  )  const

Access to the current CPU time without disturbing time measurement. The elapsed time is returned in units of seconds.

double Timer::wall_time (  )  const

Access to the current wall time without disturbing time measurement. The elapsed time is returned in units of seconds.


Member Data Documentation

Value of the user time when start() was called the last time or when the object was created and no stop() was issued in between.

Similar to start_time, but needed for children threads in multithread mode. Value of the user time when start() was called the last time or when the object was created and no stop() was issued in between.

For some reason (error in operating system?) the function call getrusage(RUSAGE_CHILDREN,.) gives always 0 (at least on Solaris7). Hence the Timer class still does not yet work for multithreading mode.

Value of the wall time when start() was called the last time or when the object was created and no stop() was issued in between.

Accumulated time for all previous start()/stop() cycles. The time for the present cycle is not included.

Accumulated wall time for all previous start()/stop() cycles. The wall time for the present cycle is not included.

bool Timer::running [private]

Store whether the timer is presently running.

MPI_Comm Timer::mpi_communicator [private]

Store whether the timer is presently running.


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

deal.II documentation generated on Sat Aug 15 16:52:28 2009 by doxygen 1.5.9