哪种方式更快且编译器/缓存更友好,在处理矩阵时使用 M[a][b] 或 M[a*b]?
我尝试在编译器资源管理器中在分配、初始化和返回矩阵的函数中编写两种方式,但我不知道汇编以及每条指令需要多少时间
int **M = malloc(sizeof(int*)*m)
for(i=0; i<m; ++i) {
*M = malloc(sizeof(int)*n);
for(int j = 0; j < n; ++j){
M[j] = j;
}
对比
int *M = malloc(m*n*sizeof(int));
for(i = 0; i < m*n; ++i) M[i] = i;
我希望第二种方法更快。
