home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / Lib / util / timer.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  1.4 KB  |  69 lines

  1. /* timer.c: utilities to provide timing information */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Lib/util/RCS/timer.c,v 6.0 1991/12/18 20:25:18 jpo Rel $";
  5. # endif
  6.  
  7. /*
  8.  * $Header: /xtel/pp/pp-beta/Lib/util/RCS/timer.c,v 6.0 1991/12/18 20:25:18 jpo Rel $
  9.  *
  10.  * $Log: timer.c,v $
  11.  * Revision 6.0  1991/12/18  20:25:18  jpo
  12.  * Release 6.0
  13.  *
  14.  */
  15.  
  16.  
  17.  
  18. #include "util.h"
  19. #include <sys/time.h>
  20.  
  21. #define NBBY     8        /* no. bits / byte */
  22.  
  23. static void tvsub ();
  24.  
  25. void timer_start (tv)
  26. struct timeval *tv;
  27. {
  28. #ifdef UNICORN
  29.     (void) gettimeofday (tv);
  30. #else
  31.     (void) gettimeofday (tv, (struct timezone *)0);
  32. #endif
  33. }
  34.  
  35. void timer_end (tv, cc, string)
  36. struct timeval *tv;
  37. int    cc;
  38. char    *string;
  39. {
  40.     long                    ms;
  41.     float                   bs;
  42.     struct timeval stoptime, td;
  43. #ifdef UNICORN    /* funny gettimeofday */
  44.     (void) gettimeofday (&stoptime);
  45. #else
  46.     (void) gettimeofday (&stoptime, (struct timezone *)0);
  47. #endif
  48.  
  49.     tvsub (&td, &stoptime, tv);
  50.     ms = (td.tv_sec * 1000) + (td.tv_usec / 1000);
  51.     bs = (((float) cc * NBBY * 1000) / (float) (ms ? ms : 1)) / NBBY;
  52.  
  53.     PP_NOTICE (("%s: %d bytes in %d.%02d seconds (%.2f Kbytes/s)",
  54.             string, cc, td.tv_sec, td.tv_usec / 10000, bs / 1024));
  55. }
  56.  
  57. static void tvsub (tdiff, t1, t0)
  58. register struct timeval *tdiff,
  59.             *t1,
  60.             *t0;
  61. {
  62.     tdiff -> tv_sec = t1 -> tv_sec - t0 -> tv_sec;
  63.     tdiff -> tv_usec = t1 -> tv_usec - t0 -> tv_usec;
  64.     if (tdiff -> tv_usec < 0)
  65.         tdiff -> tv_sec--, tdiff -> tv_usec += 1000000;
  66. }
  67.  
  68.     
  69.