summaryrefslogtreecommitdiff
path: root/ace/High_Res_Timer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/High_Res_Timer.cpp')
-rw-r--r--ace/High_Res_Timer.cpp50
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 */