Advertisement
Guest User

Untitled

a guest
Sep 12th, 2016
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3.  
  4. #define X 512
  5. #define Y 512
  6. #define Z 512
  7. #define N 16
  8.  
  9. using namespace std;
  10.  
  11. inline void set1(int*** a, int x, int y, int z)
  12. {
  13.   a[x][y][z] = 63;
  14. }
  15.  
  16. inline void set2(int* a, int x, int y, int z)
  17. {
  18.   a[x * Y * Z + y * Z + z] = 63;
  19. }
  20.  
  21. inline void set3(int* a, int i)
  22. {
  23.   a[i] = 63;
  24. }
  25.  
  26. inline double dt(clock_t t)
  27. {
  28.   return (double)(clock() - t) / CLOCKS_PER_SEC * 1000;
  29. }
  30.  
  31. inline void printdt(double dt)
  32. {
  33.   cout << "dt: " << dt << "ms" << endl;
  34. }
  35.  
  36. inline double avg(double* d, int n)
  37. {
  38.   double v = 0;
  39.   for (int i = 0; i < n; i++)
  40.     v += d[i];
  41.   v /= n;
  42.   return v;
  43. }
  44.  
  45. int main(int argc, char* argv[])
  46. {
  47.   clock_t t;
  48.   double* d = new double[N];
  49.  
  50.   for (int n = 0; n < N; n++)
  51.   {
  52.     int* a = new int[X * Y * Z];
  53.     t = clock();
  54.     for (int i = 0; i < X * Y * Z; i++)
  55.       {
  56.     a[i] = 34;
  57.       }
  58.     d[n] = dt(t);
  59.     delete[] a;
  60.   }
  61.   printdt(avg(d, N));
  62.  
  63.   for (int n = 0; n < N; n++)
  64.   {
  65.     int* a = new int[X * Y * Z];
  66.     t = clock();
  67.     for (int i = 0; i < X * Y * Z; i++)
  68.       {
  69.     set3(a, i);
  70.       }
  71.     d[n] = dt(t);
  72.     delete[] a;
  73.   }
  74.   printdt(avg(d, N));
  75.  
  76.   for (int n = 0; n < N; n++)
  77.   {
  78.     int*** a = new int**[X];
  79.     for (int x = 0; x < X; x++)
  80.       {
  81.     a[x] = new int*[Y];
  82.     for (int y = 0; y < Y; y++)
  83.       {
  84.         a[x][y] = new int[Z];
  85.       }
  86.       }
  87.     t = clock();
  88.     for (int x = 0; x < X; x++)
  89.       {
  90.     for (int y = 0; y < Y; y++)
  91.       {
  92.         for (int z = 0; z < Z; z++)
  93.           {
  94.         a[x][y][z] = 34;
  95.           }
  96.       }
  97.       }
  98.     d[n] = dt(t);
  99.     for (int x = 0; x < X; x++)
  100.       {
  101.     for (int y = 0; y < Y; y++)
  102.       {
  103.         delete[] a[x][y];
  104.       }
  105.     delete[] a[x];
  106.       }
  107.   }
  108.   printdt(avg(d, N));
  109.  
  110.   for (int n = 0; n < N; n++)
  111.   {
  112.     int*** a = new int**[X];
  113.     for (int x = 0; x < X; x++)
  114.       {
  115.     a[x] = new int*[Y];
  116.     for (int y = 0; y < Y; y++)
  117.       {
  118.         a[x][y] = new int[Z];
  119.       }
  120.       }
  121.     t = clock();
  122.     for (int x = 0; x < X; x++)
  123.       {
  124.     for (int y = 0; y < Y; y++)
  125.       {
  126.       for (int z = 0; z < Z; z++)
  127.         {
  128.           set1(a, x, y, z);
  129.         }
  130.       }
  131.       }
  132.     d[n] = dt(t);
  133.     for (int x = 0; x < X; x++)
  134.       {
  135.     for (int y = 0; y < Y; y++)
  136.       {
  137.       delete[] a[x][y];
  138.       }
  139.     delete[] a[x];
  140.       }
  141.   }
  142.   printdt(avg(d, N));
  143.  
  144.   for (int n = 0; n < N; n++)
  145.   {
  146.     int* a = new int[X * Y * Z];
  147.     t = clock();
  148.     for (int x = 0; x < X; x++)
  149.       {
  150.     for (int y = 0; y < Y; y++)
  151.       {
  152.         for (int z = 0; z < Z; z++)
  153.           {
  154.         a[x * Y * Z + y * Z + z] = 34;
  155.           }
  156.       }
  157.       }
  158.     d[n] = dt(t);
  159.     delete[] a;
  160.   }
  161.   printdt(avg(d, N));
  162.  
  163.   for (int n = 0; n < N; n++)
  164.   {
  165.     int* a = new int[X * Y * Z];
  166.     t = clock();
  167.     for (int x = 0; x < X; x++)
  168.       {
  169.     for (int y = 0; y < Y; y++)
  170.       {
  171.         for (int z = 0; z < Z; z++)
  172.           {
  173.         set2(a, x, y, z);
  174.           }
  175.       }
  176.       }
  177.     d[n] = dt(t);
  178.     delete[] a;
  179.   }
  180.   printdt(avg(d, N));
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement