#include "timer.hh"
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
Include dependency graph for timetest.cc:
Go to the source code of this file.
Defines | |
#define | MAX_HIST 10000 |
Functions | |
void | quittimetest () |
void | quittimetest (int sig) |
int | main (int argc, char **argv) |
Variables | |
int | quit_timetest_flag = 0 |
double | period = 0.001 |
int | hist [MAX_HIST] |
|
Definition at line 27 of file timetest.cc. |
|
|
|
Definition at line 20 of file timetest.cc. 00021 { 00022 quit_timetest_flag = 1; 00023 } |
|
Definition at line 37 of file timetest.cc. 00039 { 00040 00041 int count = 0; 00042 int hist_index; 00043 int lo_hist_index = MAX_HIST; 00044 int hi_hist_index = 0; 00045 double start_time, end_time; 00046 double avg_time, total_time; 00047 double min_time = 1E99; 00048 double max_time = -1E99; 00049 double last_time; 00050 00051 if (argc > 1) 00052 { 00053 period = strtod (argv[1], 0); 00054 } 00055 signal (SIGINT, quittimetest); 00056 start_time = etime (); 00057 last_time = start_time; 00058 00059 for (int i = 0; i < MAX_HIST; i++) 00060 { 00061 hist[i] = 0; 00062 } 00063 00064 last_time = etime (); 00065 esleep (period); 00066 while (!quit_timetest_flag) 00067 { 00068 count++; 00069 double cur_time = etime (); 00070 double diff = (cur_time - last_time); 00071 if (min_time > diff) 00072 { 00073 min_time = diff; 00074 } 00075 if (max_time < diff) 00076 { 00077 max_time = diff; 00078 } 00079 hist_index = ((int) (sqrt (MAX_HIST) * diff / period)); 00080 if (hist_index < 0) 00081 { 00082 hist_index = 0; 00083 } 00084 if (hist_index > MAX_HIST - 1) 00085 { 00086 hist_index = MAX_HIST - 1; 00087 } 00088 if (hi_hist_index < hist_index) 00089 { 00090 hi_hist_index = hist_index; 00091 } 00092 if (lo_hist_index > hist_index) 00093 { 00094 lo_hist_index = hist_index; 00095 } 00096 hist[hist_index]++; 00097 if (count % ((int) (5.0 / period)) == 0 || period > 5.0) 00098 { 00099 total_time = (cur_time - start_time); 00100 avg_time = count > 0 ? total_time / count : -1; 00101 printf 00102 ("count: %d min_time:%f max_time:%f total_time:%f avg_time: %f\n", 00103 count, min_time, max_time, total_time, avg_time); 00104 } 00105 last_time = cur_time; 00106 esleep (period); 00107 } 00108 00109 end_time = etime (); 00110 total_time = end_time - start_time; 00111 avg_time = count > 0 ? total_time / count : -1; 00112 printf ("count: %d min_time:%f max_time:%f total_time:%f avg_time: %f\n", 00113 count, min_time, max_time, total_time, avg_time); 00114 printf ("\n\n"); 00115 printf ("time:%f\n", total_time); 00116 printf ("count:%d\n", count); 00117 if (count > 0) 00118 { 00119 printf ("period:%f\n", total_time / count); 00120 } 00121 if (total_time > 0.0) 00122 { 00123 printf ("frequency:%f\n", count / total_time); 00124 } 00125 00126 printf ("\n\nHistogram:\n"); 00127 printf ("Period \tCount \tPercent\n"); 00128 for (int i = lo_hist_index; i <= hi_hist_index; i++) 00129 { 00130 if (i > lo_hist_index + 2 && i < hi_hist_index - 1 && hist[i] == 0 00131 && hist[i - 1] == 0 && hist[i + 1] == 0) 00132 { 00133 if (hist[i - 2] != 0) 00134 { 00135 printf (" . . . \n"); 00136 } 00137 continue; 00138 } 00139 printf ("%6.6f \t%6.6d \t%6.6f%\n", period / sqrt (MAX_HIST) * i, 00140 hist[i], 100 * ((double) hist[i] / count));; 00141 } 00142 printf ("\n"); 00143 00144 00145 #ifdef VXWORKS 00146 return (0); 00147 #endif 00148 } |
|
Definition at line 17 of file timetest.cc. |
|
Definition at line 25 of file timetest.cc. |
|
Definition at line 28 of file timetest.cc. |