ACE_Profile_Timer Class Reference

This class provides both a timing mechanism and a mechanism for reporting the resource usage of a process. More...

#include <Profile_Timer.h>

Collaboration diagram for ACE_Profile_Timer:

Collaboration graph
[legend]
List of all members.

Public Types

typedef ACE_Rusage Rusage

Public Member Functions

 ACE_Profile_Timer (void)
 Default constructor. Clears all time values to 0.

 ~ACE_Profile_Timer (void)
 Shutdown the timer.

int start (void)
 Activate the timer.

int stop (void)
 Stop the timer.

int elapsed_time (ACE_Elapsed_Time &et)
 Compute the time elapsed between calls to start() and stop().

void elapsed_rusage (ACE_Profile_Timer::Rusage &rusage)
void get_rusage (ACE_Profile_Timer::Rusage &rusage)
 Return the resource utilization (don't recompute it).

void dump (void) const
 Dump the state of an object.


Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.


Private Member Functions

void compute_times (ACE_Elapsed_Time &et)
 Compute how much time has elapsed.


Private Attributes

ACE_Profile_Timer::Rusage begin_usage_
 Keep track of the starting resource utilization.

ACE_Profile_Timer::Rusage end_usage_
 Keep track of the ending resource utilization.

ACE_Profile_Timer::Rusage last_usage_
 Keep track of the last rusage for incremental timing.

ACE_High_Res_Timer timer_
 The high resolution timer.


Detailed Description

This class provides both a timing mechanism and a mechanism for reporting the resource usage of a process.

Definition at line 34 of file Profile_Timer.h.


Member Typedef Documentation

typedef ACE_Rusage ACE_Profile_Timer::Rusage
 

Definition at line 57 of file Profile_Timer.h.

Referenced by elapsed_rusage(), and get_rusage().


Constructor & Destructor Documentation

ACE_Profile_Timer::ACE_Profile_Timer void   ) 
 

Default constructor. Clears all time values to 0.

Definition at line 283 of file Profile_Timer.cpp.

References ACE_TRACE, and ACE_OS::memset().

00284   : timer_ ()
00285 {
00286   ACE_TRACE ("ACE_Profile_Timer::ACE_Profile_Timer");
00287 #  if defined (ACE_HAS_GETRUSAGE)
00288 
00289   ACE_OS::memset (&this->end_usage_, 0, sizeof this->end_usage_);
00290   ACE_OS::memset (&this->begin_usage_, 0, sizeof this->begin_usage_);
00291   ACE_OS::memset (&this->last_usage_, 0, sizeof this->last_usage_);
00292 
00293   ACE_OS::memset (&this->begin_time_, 0, sizeof this->begin_time_);
00294   ACE_OS::memset (&this->end_time_, 0, sizeof this->end_time_);
00295   ACE_OS::memset (&this->last_time_, 0, sizeof this->last_time_);
00296 #  endif /* ACE_HAS_GETRUSAGE */
00297 }

ACE_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE ACE_Profile_Timer::~ACE_Profile_Timer void   ) 
 

Shutdown the timer.

Definition at line 72 of file Profile_Timer.inl.

00073 {
00074 }


Member Function Documentation

void ACE_Profile_Timer::compute_times ACE_Elapsed_Time et  )  [private]
 

Compute how much time has elapsed.

ACE_BEGIN_VERSIONED_NAMESPACE_DECL void ACE_Profile_Timer::dump void   )  const
 

Dump the state of an object.

Definition at line 274 of file Profile_Timer.cpp.

References ACE_TRACE, and ACE_High_Res_Timer::dump().

00275 {
00276 #if defined (ACE_HAS_DUMP)
00277   ACE_TRACE ("ACE_Profile_Timer::dump");
00278   timer_.dump ();
00279 #endif /* ACE_HAS_DUMP */
00280 }

void ACE_Profile_Timer::elapsed_rusage ACE_Profile_Timer::Rusage rusage  ) 
 

Compute the amount of resource utilization between calls to start() and stop().

Definition at line 343 of file Profile_Timer.cpp.

References ACE_TRACE, and Rusage.

00344 {
00345   ACE_TRACE ("ACE_Profile_Timer::elapsed_rusage");
00346 
00347 #  if defined (ACE_HAS_GETRUSAGE)
00348   // Use ACE_Time_Value's as intermediate because the type of ru_utime can
00349   // be multiple types and using the - operator is not safe when this are
00350   // 64bit FILETIMEs on Windows
00351   ACE_Time_Value end_ru_utime (this->end_usage_.ru_utime);
00352   ACE_Time_Value begin_ru_utime (this->begin_usage_.ru_utime);
00353   usage.ru_utime = end_ru_utime - begin_ru_utime;
00354 
00355   ACE_Time_Value end_ru_stime (this->end_usage_.ru_stime);
00356   ACE_Time_Value begin_ru_stime (this->begin_usage_.ru_stime);
00357   usage.ru_stime = end_ru_stime - begin_ru_stime;
00358 #  else /* ACE_HAS_GETRUSAGE */
00359   usage = 0;
00360 #  endif /* ACE_HAS_GETRUSAGE */
00361 }

int ACE_Profile_Timer::elapsed_time ACE_Elapsed_Time et  ) 
 

Compute the time elapsed between calls to start() and stop().

Definition at line 300 of file Profile_Timer.cpp.

References ACE_hrtime_t, ACE_ONE_SECOND_IN_NSECS, ACE_ONE_SECOND_IN_USECS, ACE_Time_Value, ACE_TRACE, ACE_High_Res_Timer::elapsed_time(), ACE_Profile_Timer::ACE_Elapsed_Time::real_time, ACE_Time_Value::sec(), ACE_Profile_Timer::ACE_Elapsed_Time::system_time, ACE_Time_Value::usec(), and ACE_Profile_Timer::ACE_Elapsed_Time::user_time.

00301 {
00302   ACE_TRACE ("ACE_Profile_Timer::elapsed_time");
00303 
00304   ACE_hrtime_t delta_t; // nanoseconds
00305   timer_.elapsed_time (delta_t);
00306 #  if defined (ACE_LACKS_LONGLONG_T)
00307   et.real_time = delta_t / (double) ACE_ONE_SECOND_IN_NSECS;
00308 #  else
00309   et.real_time = (__int64) delta_t / (double) ACE_ONE_SECOND_IN_NSECS;
00310 #  endif /* ACE_LACKS_LONGLONG_T */
00311 #  if defined (ACE_HAS_GETRUSAGE)
00312   ACE_Time_Value atv = ACE_Time_Value (this->end_usage_.ru_utime)
00313                        - ACE_Time_Value (this->begin_usage_.ru_utime);
00314   et.user_time = atv.sec () + ((double) atv.usec ()) / ACE_ONE_SECOND_IN_USECS;
00315 
00316   atv = ACE_Time_Value (this->end_usage_.ru_stime)
00317         - ACE_Time_Value (this->begin_usage_.ru_stime);
00318   et.system_time = atv.sec () + ((double) atv.usec ()) / ACE_ONE_SECOND_IN_USECS;
00319 #  else /* ACE_HAS_GETRUSAGE */
00320   et.user_time = 0;
00321   et.system_time = 0;
00322 #  endif /* ACE_HAS_GETRUSAGE */
00323 
00324   return 0;
00325 }

void ACE_Profile_Timer::get_rusage ACE_Profile_Timer::Rusage rusage  ) 
 

Return the resource utilization (don't recompute it).

Definition at line 330 of file Profile_Timer.cpp.

References ACE_TRACE, end_usage_, and Rusage.

00331 {
00332   ACE_TRACE ("ACE_Profile_Timer::get_rusage");
00333 #  if defined (ACE_HAS_GETRUSAGE)
00334   usage = this->end_usage_;
00335 #  else /* ACE_HAS_GETRUSAGE */
00336   usage = 0;
00337 #  endif /* ACE_HAS_GETRUSAGE */
00338 }

ACE_INLINE int ACE_Profile_Timer::start void   ) 
 

Activate the timer.

Definition at line 77 of file Profile_Timer.inl.

References ACE_TRACE, ACE_OS::getrusage(), RUSAGE_SELF, and ACE_High_Res_Timer::start().

00078 {
00079   ACE_TRACE ("ACE_Profile_Timer::start");
00080 #  if defined (ACE_HAS_GETRUSAGE)
00081   ACE_OS::getrusage (RUSAGE_SELF,
00082                      &this->begin_usage_);
00083 #  endif /* ACE_HAS_GETRUSAGE */
00084   this->timer_.start ();
00085   return 0;
00086 }

ACE_INLINE int ACE_Profile_Timer::stop void   ) 
 

Stop the timer.

Definition at line 89 of file Profile_Timer.inl.

References ACE_TRACE, end_usage_, ACE_OS::getrusage(), last_usage_, RUSAGE_SELF, and ACE_High_Res_Timer::stop().

00090 {
00091   ACE_TRACE ("ACE_Profile_Timer::stop");
00092   this->timer_.stop ();
00093 #  if defined (ACE_HAS_GETRUSAGE)
00094   this->last_usage_ = this->end_usage_;
00095   ACE_OS::getrusage (RUSAGE_SELF, &this->end_usage_);
00096 #  endif /* ACE_HAS_GETRUSAGE */
00097   return 0;
00098 }


Member Data Documentation

ACE_Profile_Timer::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

Definition at line 88 of file Profile_Timer.h.

ACE_Profile_Timer::Rusage ACE_Profile_Timer::begin_usage_ [private]
 

Keep track of the starting resource utilization.

Definition at line 95 of file Profile_Timer.h.

ACE_Profile_Timer::Rusage ACE_Profile_Timer::end_usage_ [private]
 

Keep track of the ending resource utilization.

Definition at line 98 of file Profile_Timer.h.

Referenced by get_rusage(), and stop().

ACE_Profile_Timer::Rusage ACE_Profile_Timer::last_usage_ [private]
 

Keep track of the last rusage for incremental timing.

Definition at line 101 of file Profile_Timer.h.

Referenced by stop().

ACE_High_Res_Timer ACE_Profile_Timer::timer_ [private]
 

The high resolution timer.

Definition at line 128 of file Profile_Timer.h.


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:27:26 2006 for ACE by doxygen 1.3.6