Actual source code: PetscMemcmp.c

  1: /*$Id: PetscMemcmp.c,v 1.18 2001/03/23 23:25:45 balay Exp $*/

  3: #include "petsc.h"

  5: int main(int argc,char **argv)
  6: {
  7:   PetscLogDouble x,y,z;
  8:   Scalar     A[10000],B[10000];
  9:   int        i,ierr;

 11:   PetscInitialize(&argc,&argv,0,0);

 13:   for (i=0; i<10000; i++) {
 14:     A[i] = i%61897;
 15:     B[i] = i%61897;
 16:   }
 17:   /* To take care of paging effects */
 18:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 19:   PetscGetTime(&x);

 21:   PetscGetTime(&x);
 22:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 23:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 24:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 25:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 26:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 27:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 28:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 29:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 30:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 31:   PetscMemcmp(A,B,sizeof(Scalar)*10000);
 32:   PetscGetTime(&y);
 33:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 34:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 35:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 36:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 37:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 38:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 39:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 40:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 41:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 42:   PetscMemcmp(A,B,sizeof(Scalar)*0);
 43:   PetscGetTime(&z);

 45:   fprintf(stdout,"%s : n","PetscMemcmp");
 46:   fprintf(stdout,"    %-11s : %e secn","Latency",(z-y)/10.0);
 47:   fprintf(stdout,"    %-11s : %e secn","Per Scalar",(2*y-x-z)/100000);

 49:   PetscFinalize();
 50:   return(0);
 51: }