home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pctech / 1988_02 / auto3.c < prev    next >
Text File  |  1985-09-30  |  2KB  |  113 lines

  1. /* auto3.c - sieve, penregs and filecopy benchmarks */
  2. #include "stdio.h"
  3.  
  4. #define true 1
  5. #define false 0
  6. #define size 8190
  7. #define sizepl 8191
  8.  
  9. int sieve()          /* sieve benchmark - no register vars. */
  10.  {
  11.     int i,prime,k,count;
  12.     char flags[sizepl];
  13.  
  14.     count=0;
  15.     for(i = 0; i<=size;i++)
  16.        flags[i]=true;
  17.        for(i=0;i <= size; i++){
  18.           if(flags[i]){
  19.              prime = i+i+3;
  20.              k=i+prime;
  21.              while(k<=size){
  22.                     flags[k] = false;
  23.                 k += prime;
  24.                 }
  25.              count = count+1;
  26.              }
  27.           }
  28.     return(count);
  29.  }
  30.  
  31.  
  32. int siever()            /* sieve with register variables */
  33.  {
  34.    register int k ,prime ;
  35.     int i , count;
  36.     char flags[sizepl];
  37.  
  38.     count=0;
  39.     for(i = 0; i<=size;i++)
  40.        flags[i]=true;
  41.        for(i=0;i <= size; i++){
  42.           if(flags[i]){
  43.              prime = i+i+3;
  44.              k=i+prime;
  45.              while(k<=size){
  46.                 flags[k] = false;
  47.                 k += prime;
  48.                 }
  49.              count = count+1;
  50.              }
  51.           }
  52.     return(count);
  53.     }
  54.  
  55.  
  56. int penregs()           /* string copy with register variables */
  57.  {
  58.     int i ;
  59.     char s[501] , s2[501] ;
  60.  
  61.     for(i=0 ; i < 500 ; i=i+1 )
  62.        { s[i] = 'a' ; } ;
  63.     s[500] = '\0' ;
  64.  
  65.     for( i=0 ; i < 100 ; i=i+1 )
  66.        { rscopy(s2,s) ; } ;
  67.  }
  68.  
  69.          
  70. int rscopy(to,from)     /* string copy function */
  71.  char *to ;             /* pointer to destination string */
  72.  char *from ;           /* pointer to source string */
  73.  {
  74.     register char *t , *f ;
  75.  
  76.     t = to ; f = from ;
  77.     while( (*t++ = *f++) != '\0' ) /* check for end of string */
  78.       { ; } ; /* copy one char and advance ptrs */
  79.  }
  80.  
  81. extern int nblock ;
  82. extern char *inname , *outname ;
  83.  
  84. int rwfile()            /* file copy benchmark - read/write */
  85.  {
  86. #define  NO_FILE    (-1)
  87. #define  RD_MODE     0x8000
  88. #define  WR_MODE     0x8001
  89.  
  90.     int    in ,
  91.            out ;
  92.     int c ;
  93.     long n ;
  94.     char buffer[8096] ;
  95.  
  96.     in = open(inname,RD_MODE);
  97.     out = creat(outname,WR_MODE);
  98.     if( (in == NO_FILE) || (out == NO_FILE) )
  99.       { printf("can't open a file");
  100.         exit(0) ;
  101.       }
  102.     n=0;
  103.     c = read(in,buffer,nblock) ;
  104.     while( c > 0 )
  105.       { n=n+c ;
  106.         write(out,buffer,c);
  107.         c = read(in,buffer,nblock) ;
  108.       } 
  109.     close(in);
  110.     close(out);
  111.  }
  112.  
  113.