+
+ unsigned short int z1[128][3118], z2[128][3118];
+ GET_TIME(tms1);
+ for(i = 0 ; i< nbLoop ; i++)
+ {
+ unsigned short int *pv1=&z1[0][0], *pv2=&z2[0][0];
+ for (int j=0;j<3118;j++)
+ for(int i=0; i<128;i++)
+ z2[i][j] = z1[i][j];
+ }
+ GET_TIME(tms2);
+ HOW_LONG(tms2,tms1);
+
+ std::cout << "Copy 2 arrays ([i][j], pointer)"
+ << std::endl;
+
+ GET_TIME(tms1);
+ for(i = 0 ; i< nbLoop ; i++)
+ {
+ unsigned short int *pv1=&z1[0][0], *pv2=&z2[0][0];
+ for (int j=0;j<3118;j++)
+ for(int i=0; i<128;i++)
+ z2[i][j] = *pv1++;
+ }
+ GET_TIME(tms2);
+ HOW_LONG(tms2,tms1);
+
+ std::cout << "Copy 2 arrays (2 pointers)" << std::endl;
+ GET_TIME(tms1);
+ // unsigned short int w1[3118*128], w2[3118][128];
+ for(i = 0 ; i< nbLoop ; i++)
+ {
+ unsigned short int *pw1=&z1[0][0], *pw2=&z2[0][0];
+ for (int j=0;j<3118;j++)
+ for(int i=0; i<128;i++)
+ *pw2++ = *pw1++;
+ }
+ GET_TIME(tms2);
+ HOW_LONG(tms2,tms1);
+
+
+ std::cout << "Copy 2 arrays (memcpy)" << std::endl;
+ GET_TIME(tms1);
+ for(i = 0 ; i< nbLoop ; i++)
+ {
+ unsigned short int *pw1=&z1[0][0], *pw2=&z2[0][0];
+ memcpy(pw2,pw1,3118*128*sizeof(unsigned short int));
+ }
+ GET_TIME(tms2);
+ HOW_LONG(tms2,tms1);
+
+
+
+ std::cout << "Transpose 2 arrays [i][j]"
+ << std::endl;
+
+ unsigned short int t1[3118][128], t2[128][3118];
+ GET_TIME(tms1);
+ for(i = 0 ; i< nbLoop ; i++)
+ {
+ unsigned short int *pv1=&t1[0][0], *pv2=&t2[0][0];
+ for (int j=0;j<3118;j++)
+ for(int i=0; i<128;i++)
+ t2[i][j] = t1[j][i];
+ }
+ GET_TIME(tms2);
+ HOW_LONG(tms2,tms1);
+
+
+ std::cout << "Transpose 2 arrays ([i][j], pointer)"
+ << std::endl;
+
+ unsigned short int w1[3118*128], w2[3118][128];
+ GET_TIME(tms1);
+ for(i = 0 ; i< nbLoop ; i++)
+ {
+ unsigned short int *pw1=w1, *pw2=&w2[0][0];
+ for (int j=0;j<3118;j++)
+ for(int i=0; i<128;i++)
+ w2[i][j] = *pw1++;
+ }
+ GET_TIME(tms2);
+ HOW_LONG(tms2,tms1);
+
+
+ std::cout << "Transpose 2 arrays (2 pointers)"
+ << std::endl;
+
+ unsigned short int v1[3118*128], v2[128*3118];
+ GET_TIME(tms1);
+ for(i = 0 ; i< nbLoop ; i++)
+ {
+ unsigned short int *pv1=v1, *pv2=v2;
+ for (int j=0;j<3118;j++)
+ for(int i=0; i<128;i++)
+ *(pv2+i*128+j) = *pv1++;
+ }
+ GET_TIME(tms2);
+ HOW_LONG(tms2,tms1);
+
+
+