*** empty log message ***
[csql.git] / test / performance / wisc / wiscTimer.c
blobffe4637f57b1b770a0db340430ad9cefcc8dd3e1
2 #include <stdio.h>
3 #include <unistd.h>
4 #include "wiscTimer.h"
6 wiscTimer::wiscTimer ()
8 tickVal = (double) sysconf (_SC_CLK_TCK);
10 this->resetTimer();
13 int wiscTimer::resetTimer ()
15 in_time = 0;
16 count = 0;
17 sumWallX = 0.0;
18 sumWallX2 = 0.0;
19 sumUserX = 0.0;
20 sumUserX2 = 0.0;
21 sumKernX = 0.0;
22 sumKernX2 = 0.0;
24 return 0;
27 int wiscTimer::startTimer ()
29 if (in_time) {
30 fprintf (stderr, "Timer already started\n");
31 return -1;
33 in_time = 1;
35 gettimeofday (&startTval, NULL);
36 times (&startTmsval);
38 return 0;
41 int wiscTimer::stopTimer ()
43 if (!in_time) {
44 fprintf (stderr, "Timer NOT started\n");
45 return -1;
47 in_time = 0;
49 struct timeval endTval;
50 struct tms endTmsval;
52 gettimeofday (&endTval, NULL);
53 times (&endTmsval);
55 double kB, kA, uB, uA, dW;
56 kB = ((double) startTmsval.tms_stime) / tickVal;
57 kA = ((double) endTmsval.tms_stime) / tickVal;
59 uB = ((double) startTmsval.tms_utime) / tickVal;
60 uA = ((double) endTmsval.tms_utime) / tickVal;
62 dW = ((double) (endTval.tv_sec - startTval.tv_sec)) * 1000.0 +
63 ((double) (endTval.tv_usec - startTval.tv_usec)) / 1000.0;
65 sumWallX += dW;
66 sumWallX2 += dW * dW;
68 double kX, uX;
70 kX = kA - kB;
71 uX = uA - uB;
73 sumKernX += kX;
74 sumKernX2 += kX * kX;
76 sumUserX += uX;
77 sumUserX2 += uX * uX;
79 double rX;
81 rX = kX + uX;
82 sumResX += rX;
83 sumResX2 += rX * rX;
85 count++;
87 return 0;
90 int wiscTimer::numIters ()
92 return count;
95 double wiscTimer::avgTime (wiscTimeType timeType)
97 if (count == 0)
98 return 0.0;
100 double Numer;
102 switch (timeType) {
103 case wiscWallTime:
104 Numer = sumWallX;
105 break;
106 case wiscResTime:
107 Numer = sumResX * 1000.0;
108 break;
109 case wiscUserTime:
110 Numer = sumUserX * 1000.0;
111 break;
112 case wiscSysTime:
113 Numer = sumKernX * 1000.0;
114 break;
117 return (Numer / ((double) count));
121 double wiscTimer::stddevTime (wiscTimeType)
123 return 0.0;