Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

timetest.cc File Reference

#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:

Include dependency graph

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]


Define Documentation

#define MAX_HIST   10000
 

Definition at line 27 of file timetest.cc.


Function Documentation

void quittimetest  
 

void quittimetest int    sig [static]
 

Definition at line 20 of file timetest.cc.

00021 {
00022   quit_timetest_flag = 1;
00023 }

int main int    argc,
char **    argv
 

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 }


Variable Documentation

int quit_timetest_flag = 0
 

Definition at line 17 of file timetest.cc.

double period = 0.001
 

Definition at line 25 of file timetest.cc.

int hist[MAX_HIST]
 

Definition at line 28 of file timetest.cc.


Generated on Sun Dec 2 15:58:02 2001 for rcslib by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001