Advertisement
yorath

space locality

Jun 30th, 2013
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | None | 0 0
  1. #define NUMBER_OF_PARTICLES 1 << 15
  2.  
  3. typedef struct _PARTICLE {
  4.     float x;
  5.     float y;
  6.     float z;
  7. } PARTICLE;
  8.  
  9. PARTICLE particles[NUMBER_OF_PARTICLES];
  10.  
  11. void test1() {
  12.     for (int i = 0; i < NUMBER_OF_PARTICLES; ++i) {
  13.         PARTICLE particle = { 0, 0, 0 };
  14.         for (int j = 0; j < NUMBER_OF_PARTICLES; ++j) {
  15.             particle.x += particles[i].x + particles[j].x;
  16.             particle.y += particles[i].y + particles[j].y;
  17.             particle.z += particles[i].z + particles[j].z;
  18.         }
  19.         particles[i] = particle;
  20.     }
  21. }
  22.  
  23. void test2() {
  24.     float X[NUMBER_OF_PARTICLES];
  25.     float Y[NUMBER_OF_PARTICLES];
  26.     float Z[NUMBER_OF_PARTICLES];
  27.     for (int i = 0; i < NUMBER_OF_PARTICLES; ++i) {
  28.         X[i] = particles[i].x;
  29.         Y[i] = particles[i].y;
  30.         Z[i] = particles[i].z;
  31.     }
  32.     for (int i = 0; i < NUMBER_OF_PARTICLES; ++i) {
  33.         PARTICLE particle = { 0, 0, 0 };
  34.         for (int j = 0; j < NUMBER_OF_PARTICLES; ++j) {
  35.             particle.x += X[i] + X[j];
  36.             particle.y += Y[i] + Y[j];
  37.             particle.z += Z[i] + Z[j];
  38.         }
  39.         particles[i] = particle;
  40.     }
  41. }
  42.  
  43. int main(int argc, char** argv) {
  44.     clock_t t1, t2;
  45.  
  46.     t1 = clock();
  47.     test1();
  48.     t2 = clock();
  49.     printf("test1: %d\n", t2 - t1);
  50.  
  51.     t1 = clock();
  52.     test2();
  53.     t2 = clock();
  54.     printf("test2: %d\n", t2 - t1);
  55.  
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement