diff options
Diffstat (limited to 'ace/High_Res_Timer.cpp')
-rw-r--r-- | ace/High_Res_Timer.cpp | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/ace/High_Res_Timer.cpp b/ace/High_Res_Timer.cpp index c345c407ec9..4f04453ace6 100644 --- a/ace/High_Res_Timer.cpp +++ b/ace/High_Res_Timer.cpp @@ -32,42 +32,58 @@ ACE_High_Res_Timer::reset (void) (void) ACE_OS::memset (&this->temp_, 0, sizeof this->temp_); } -ACE_High_Res_Timer::ACE_High_Res_Timer (void) -{ - ACE_TRACE ("ACE_High_Res_Timer::ACE_High_Res_Timer"); - this->reset (); -} - void -ACE_High_Res_Timer::print_ave (char *str, int count, ACE_HANDLE handle) +ACE_High_Res_Timer::print_ave (const char *str, const int count, ACE_HANDLE handle) { ACE_TRACE ("ACE_High_Res_Timer::print_ave"); #if defined (ACE_HAS_LONGLONG_T) hrtime_t total = this->end_ - this->start_; - hrtime_t avg_nsecs = total / count; hrtime_t total_secs = total / (1000 * 1000 * 1000); - hrtime_t extra_nsecs = total - (total_secs * (1000 * 1000 * 1000)); - char buf[100]; + u_long extra_nsecs = total - (total_secs * (1000 * 1000 * 1000)); - ACE_OS::sprintf (buf, "%s count = %d, total (secs %lld, usecs %lld), avg usecs = %lld\n", - str, count, total_secs, extra_nsecs / 1000, avg_nsecs / 1000); + char buf[100]; + if (count > 1) + { + hrtime_t avg_nsecs = total / count; + ACE_OS::sprintf (buf, " count = %d, total (secs %lld, usecs %lu), avg usecs = %lld\n", + count, total_secs, (extra_nsecs + 500) / 1000, + (avg_nsecs + 500) / 1000); + } + else + ACE_OS::sprintf (buf, " total %3lld.%06lu secs\n", + total_secs, (extra_nsecs + 500) / 1000); + + ACE_OS::write (handle, str, strlen (str)); ACE_OS::write (handle, buf, strlen (buf)); +#else +# error must have ACE_HAS_LONGLONG_T with ACE_HAS_HI_RES_TIMER #endif /* ACE_HAS_LONGLONG_T */ } void -ACE_High_Res_Timer::print_total (char *str, int count, ACE_HANDLE handle) +ACE_High_Res_Timer::print_total (const char *str, const int count, ACE_HANDLE handle) { ACE_TRACE ("ACE_High_Res_Timer::print_total"); #if defined (ACE_HAS_LONGLONG_T) - hrtime_t avg_nsecs = this->total_ / count; hrtime_t total_secs = this->total_ / (1000 * 1000 * 1000); - hrtime_t extra_nsecs = this->total_ - (total_secs * (1000 * 1000 * 1000)); + u_long extra_nsecs = this->total_ - (total_secs * (1000 * 1000 * 1000)); + char buf[100]; + if (count > 1) + { + hrtime_t avg_nsecs = this->total_ / count; + ACE_OS::sprintf (buf, " count = %d, total (secs %lld, usecs %lu), avg usecs = %lld\n", + count, total_secs, (extra_nsecs + 500) / 1000, + (avg_nsecs + 500) / 1000); + } + else + ACE_OS::sprintf (buf, " total %3lld.%06lu secs\n", + total_secs, (extra_nsecs + 500) / 1000); - ACE_OS::sprintf (buf, "%s count = %d, total (secs %lld, usecs %lld), avg usecs = %lld\n", - str, count, total_secs, extra_nsecs / 1000, avg_nsecs / 1000); + ACE_OS::write (handle, str, strlen (str)); ACE_OS::write (handle, buf, strlen (buf)); +#else +# error must have ACE_HAS_LONGLONG_T with ACE_HAS_HI_RES_TIMER #endif /* ACE_HAS_LONGLONG_T */ } #endif /* ACE_HAS_HI_RES_TIMER */ |