summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/clients/WebSTONE/src/timefunc.c
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/clients/WebSTONE/src/timefunc.c')
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/timefunc.c171
1 files changed, 171 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/timefunc.c b/ACE/apps/JAWS/clients/WebSTONE/src/timefunc.c
new file mode 100644
index 00000000000..fe38d821eac
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/timefunc.c
@@ -0,0 +1,171 @@
+/* $Id$ */
+/**************************************************************************
+ * *
+ * Copyright (C) 1995 Silicon Graphics, Inc. *
+ * *
+ * These coded instructions, statements, and computer programs were *
+ * developed by SGI for public use. If any changes are made to this code*
+ * please try to get the changes back to the author. Feel free to make *
+ * modifications and changes to the code and release it. *
+ * *
+ **************************************************************************/
+
+/* FUZZ: disable check_for_math_include */
+#ifndef WIN32
+#include <netdb.h>
+#include <sys/time.h>
+#include <sys/param.h>
+#else
+#include <windows.h>
+#include <winsock.h>
+#include <time.h>
+#endif /* WIN32 */
+#include <math.h>
+#include <stdio.h>
+#include "sysdep.h"
+#include "bench.h"
+
+double
+timevaldouble(struct timeval *tin)
+{
+ return ((double)tin->tv_sec + ((double)tin->tv_usec / USECINSEC));
+}
+
+
+void
+doubletimeval(const double tin, struct timeval *tout)
+{
+ tout->tv_sec = (long)floor(tin);
+ tout->tv_usec = (long)((tin - tout->tv_sec) * USECINSEC );
+}
+
+
+void
+addtime(struct timeval *OrigTime, struct timeval *NewTime)
+{
+ OrigTime->tv_usec += NewTime->tv_usec;
+ if(OrigTime->tv_usec >= USECINSEC)
+ {
+ /*
+ * NEED TO CARRY 1.
+ */
+ OrigTime->tv_sec++;
+ OrigTime->tv_usec -= USECINSEC;
+ }
+ OrigTime->tv_sec += NewTime->tv_sec;
+}
+
+
+void
+compdifftime(struct timeval *EndTime, struct timeval *StartTime, struct timeval *DiffTime)
+{
+ struct timeval endtime = *EndTime;
+
+ if((endtime.tv_usec - StartTime->tv_usec) < 0)
+ {
+ /*
+ * NEED TO BORROW.
+ */
+ endtime.tv_usec += USECINSEC;
+ endtime.tv_sec--;
+ }
+ DiffTime->tv_usec = endtime.tv_usec - StartTime->tv_usec;
+ DiffTime->tv_sec = endtime.tv_sec - StartTime->tv_sec;
+}
+
+
+void
+mintime(struct timeval *CurrMinTime, struct timeval *CheckMinTime)
+{
+ if(CheckMinTime->tv_sec < CurrMinTime->tv_sec)
+ {
+ *CurrMinTime = *CheckMinTime;
+ return;
+ }
+ if(CheckMinTime->tv_sec == CurrMinTime->tv_sec)
+ {
+ if(CheckMinTime->tv_usec < CurrMinTime->tv_usec)
+ {
+ *CurrMinTime = *CheckMinTime;
+ return;
+ }
+ }
+}
+
+
+void
+maxtime(struct timeval *CurrMaxTime, struct timeval *CheckMaxTime)
+{
+ if(CheckMaxTime->tv_sec > CurrMaxTime->tv_sec)
+ {
+ *CurrMaxTime = *CheckMaxTime;
+ return;
+ }
+ if(CheckMaxTime->tv_sec == CurrMaxTime->tv_sec)
+ {
+ if(CheckMaxTime->tv_usec > CurrMaxTime->tv_usec)
+ {
+ *CurrMaxTime = *CheckMaxTime;
+ return;
+ }
+ }
+}
+
+void
+avgtime(struct timeval *TotalTime, int NumTimes, struct timeval *AvgTime)
+{
+ double meantime;
+
+ meantime = mean(timevaldouble(TotalTime), NumTimes);
+
+ doubletimeval(meantime, AvgTime);
+}
+
+
+void
+sqtime(struct timeval *Time, struct timeval *SqTime)
+{
+ double sec;
+
+ sec = timevaldouble(Time);
+ sec *= sec; /* square */
+
+ doubletimeval(sec, SqTime);
+}
+
+
+void
+variancetime(struct timeval *SumTime, double SumSquareTime, int NumTimes, struct timeval *VarianceTime)
+{
+ double result;
+
+ result = variance(timevaldouble(SumTime), SumSquareTime, NumTimes);
+
+ doubletimeval(result, VarianceTime);
+}
+
+
+void
+stddevtime(struct timeval *SumTime, double SumSquareTime,
+ int NumTimes, struct timeval *StdDevTime)
+{
+ double result;
+
+ result = stddev(timevaldouble(SumTime), SumSquareTime, NumTimes);
+
+ doubletimeval(result, StdDevTime);
+}
+
+double
+thruputpersec(const double n, struct timeval *t)
+{
+ double tv;
+
+ tv = timevaldouble(t);
+ if (tv != 0)
+ return n / timevaldouble(t);
+ else
+ return 0;
+}
+
+