1*c4762a1bSJed Brown static char help[] = "Test scalability of PetscHSetI hash set.\n\n"; 2*c4762a1bSJed Brown 3*c4762a1bSJed Brown #include <petscsys.h> 4*c4762a1bSJed Brown #include <petsctime.h> 5*c4762a1bSJed Brown #include <petsc/private/hashseti.h> 6*c4762a1bSJed Brown 7*c4762a1bSJed Brown int main(int argc, char **argv) 8*c4762a1bSJed Brown { 9*c4762a1bSJed Brown PetscHSetI table; 10*c4762a1bSJed Brown PetscInt N = 0, i, j, n; 11*c4762a1bSJed Brown PetscBool flag; 12*c4762a1bSJed Brown PetscLogDouble t_add = 0; 13*c4762a1bSJed Brown PetscLogDouble t_has = 0; 14*c4762a1bSJed Brown PetscLogDouble t_del = 0; 15*c4762a1bSJed Brown PetscErrorCode ierr; 16*c4762a1bSJed Brown 17*c4762a1bSJed Brown ierr = PetscInitialize(&argc,&argv,NULL,help);if (ierr) return ierr; 18*c4762a1bSJed Brown ierr = PetscOptionsGetInt(NULL,NULL,"-N",&N,NULL);CHKERRQ(ierr); 19*c4762a1bSJed Brown ierr = PetscHSetICreate(&table);CHKERRQ(ierr); 20*c4762a1bSJed Brown 21*c4762a1bSJed Brown /* The following line silences warnings from Clang Static Analyzer */ 22*c4762a1bSJed Brown ierr = PetscHSetIResize(table,0);CHKERRQ(ierr); 23*c4762a1bSJed Brown 24*c4762a1bSJed Brown ierr = PetscTimeSubtract(&t_add);CHKERRQ(ierr); 25*c4762a1bSJed Brown for (i = 0; i < N; ++i) { 26*c4762a1bSJed Brown for (j = 0; j < N; ++j) { 27*c4762a1bSJed Brown PetscInt key = i+j*N; 28*c4762a1bSJed Brown ierr = PetscHSetIQueryAdd(table, key, &flag);CHKERRQ(ierr); 29*c4762a1bSJed Brown } 30*c4762a1bSJed Brown } 31*c4762a1bSJed Brown ierr = PetscTimeAdd(&t_add);CHKERRQ(ierr); 32*c4762a1bSJed Brown 33*c4762a1bSJed Brown ierr = PetscHSetIGetSize(table,&n);CHKERRQ(ierr); 34*c4762a1bSJed Brown 35*c4762a1bSJed Brown ierr = PetscTimeSubtract(&t_has);CHKERRQ(ierr); 36*c4762a1bSJed Brown for (i = 0; i < N; ++i) { 37*c4762a1bSJed Brown for (j = 0; j < N; ++j) { 38*c4762a1bSJed Brown PetscInt key = i+j*N; 39*c4762a1bSJed Brown ierr = PetscHSetIHas(table, key, &flag);CHKERRQ(ierr); 40*c4762a1bSJed Brown } 41*c4762a1bSJed Brown } 42*c4762a1bSJed Brown ierr = PetscTimeAdd(&t_has);CHKERRQ(ierr); 43*c4762a1bSJed Brown 44*c4762a1bSJed Brown ierr = PetscTimeSubtract(&t_del);CHKERRQ(ierr); 45*c4762a1bSJed Brown for (i = 0; i < N; ++i) { 46*c4762a1bSJed Brown for (j = 0; j < N; ++j) { 47*c4762a1bSJed Brown PetscInt key = i+j*N; 48*c4762a1bSJed Brown ierr = PetscHSetIQueryDel(table, key, &flag);CHKERRQ(ierr); 49*c4762a1bSJed Brown } 50*c4762a1bSJed Brown } 51*c4762a1bSJed Brown ierr = PetscTimeAdd(&t_del);CHKERRQ(ierr); 52*c4762a1bSJed Brown 53*c4762a1bSJed Brown ierr = PetscPrintf(PETSC_COMM_WORLD,"N = %D - table size: %D, add: %g, has: %g, del: %g\n",N,n,t_add,t_has,t_del);CHKERRQ(ierr); 54*c4762a1bSJed Brown 55*c4762a1bSJed Brown ierr = PetscHSetIDestroy(&table);CHKERRQ(ierr); 56*c4762a1bSJed Brown ierr = PetscFinalize(); 57*c4762a1bSJed Brown return ierr; 58*c4762a1bSJed Brown } 59*c4762a1bSJed Brown 60*c4762a1bSJed Brown /*TEST 61*c4762a1bSJed Brown 62*c4762a1bSJed Brown test: 63*c4762a1bSJed Brown args: -N 32 64*c4762a1bSJed Brown 65*c4762a1bSJed Brown TEST*/ 66