转自evol128  特此表示感谢

http://evol128.is-programmer.com/posts/35453.html

问题的出处:http://stackoverflow.com/questions/11413855/why-is-transposing-a-matrix-of-512x512-much-slower-than-transposing-a-matrix-of

事情的起因是这样的,先看下面这段代码:

#define SAMPLES 1000
#define MATSIZE 512

#include <time.h>
#include <iostream>
int mat[MATSIZE][MATSIZE];

void transpose()
{
    for ( int i = 0 ; i < MATSIZE ; i++ )
        for ( int j = 0 ; j < MATSIZE ; j++ )
        {
            int aux = mat[i][j];
            mat[i][j] = mat[j][i];
            mat[j][i] = aux;
        }
}

int main()
{
    //initialize matrix
    for ( int i = 0 ; i < MATSIZE ; i++ )
        for ( int j = 0 ; j < MATSIZE ; j++ )
            mat[i][j] = i+j;
        
        int t = clock();
        for ( int m = 0 ; m < SAMPLES ; m++ )
            transpose();
        int elapsed = clock() - t;
        
        std::cout << "Average for a matrix of " << MATSIZE << ": " << elapsed<<std::endl;
        return 1;
}
View Code

相关文章:

  • 2022-01-30
  • 2022-01-08
猜你喜欢
  • 2021-11-08
  • 2021-05-10
  • 2022-02-08
  • 2022-12-23
  • 2022-02-08
相关资源
相似解决方案