home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 28 / amigaformatcd28.iso / -seriously_amiga- / misc / posbb / src / generic / mem.c < prev    next >
C/C++ Source or Header  |  1998-05-09  |  2KB  |  120 lines

  1.  
  2. #include <time.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <math.h>
  6. /* #include "posbb_tests.h"  // this would be needed by Test_qsort,not finished,yet
  7. */
  8. #define TRUE -1
  9. #define FALSE 0
  10.  
  11.  
  12.  
  13. /****** posbb_tests.c/Test_CopyMem ******************************************
  14. *
  15. *   NAME
  16. *     Test_CopyMem -- Tests speed of memcpy()
  17. *
  18. *   SYNOPSIS
  19. *     time = Test_CopyMem( void )
  20. *
  21. *     int Test_CopyMem( void );
  22. *
  23. *   FUNCTION
  24. *     Does 100,000 CopyMem() of a 1024 bytes memory block and returns the
  25. *     time it has spent.
  26. *
  27. *   RESULT
  28. *     time - number of seconds it took to do all memory copies.
  29. *            TRUE if something went wrong (usually lack of memory).
  30. *
  31. *   EXAMPLE
  32. *     Examine posbb.c/Perform_Tests().
  33. *
  34. ****************************************************************************
  35. */
  36.  
  37. int Test_CopyMem( precision )
  38. int precision;
  39. {
  40.    time_t time1,time2;
  41.    long *mem1,*mem2;
  42.    long ret=-1,c;
  43.  
  44.    if (mem1=(long *) malloc(1024))
  45.    {
  46.      if (mem2=(long *) malloc(1024))
  47.      {
  48.  
  49.     time1 = time(NULL);
  50.     for ( c = 0; c<(100000 * precision); c++ )
  51.     {
  52.       memcpy(mem2,mem1,1024);
  53.     }
  54.     time2 = time(NULL);
  55.     free(mem1);
  56.     free(mem2);
  57.     return (time2-time1);
  58.      }
  59.      else return TRUE;
  60.    }
  61.    else return TRUE;
  62. }
  63.  
  64.  
  65. int Test_CopyMem_1Mb( precision )
  66. int precision;
  67. {
  68.    time_t time1,time2;
  69.    long *mem1,*mem2;
  70.    long ret=-1,c;
  71.  
  72.    if (mem1=(long *) malloc(1024*1024))
  73.    {
  74.      if (mem2=(long *) malloc(1024*1024))
  75.      {
  76.  
  77.     time1 = time(NULL);
  78.     for ( c = 0; c<(100 * precision); c++ )
  79.     {
  80.       memcpy(mem2,mem1,1024*1024);
  81.     }
  82.     time2 = time(NULL);
  83.     free(mem1);
  84.     free(mem2);
  85.     return (time2-time1);
  86.      }
  87.      else return TRUE;
  88.    }
  89.    else return TRUE;
  90. }
  91. int Test_CopyMem_512kb( precision )
  92. int precision;
  93. {
  94.    time_t time1,time2;
  95.    long *mem1,*mem2;
  96.    long ret=-1,c;
  97.  
  98.    if (mem1=(long *) malloc(512*1024))
  99.    {
  100.      if (mem2=(long *) malloc(512*1024))
  101.      {
  102.  
  103.     time1 = time(NULL);
  104.     for ( c = 0; c<(200 * precision); c++ )
  105.     {
  106.       memcpy(mem2,mem1,512*1024);
  107.     }
  108.     time2 = time(NULL);
  109.     free(mem1);
  110.     free(mem2);
  111.     return (time2-time1);
  112.      }
  113.      else return TRUE;
  114.    }
  115.    else return TRUE;
  116. }
  117.  
  118.  
  119.  
  120.