gpt4 book ai didi

c - 所用时间 :Row major sum Column major sum

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:20 24 4
gpt4 key购买 nike

我遇到过这个问题,我有点困惑。给出了两个代码,并询问哪个需要更多时间或者两者是否需要相同的时间。代码是:

void sumCal(int n,int a[][]){
int sum=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
sum=sum+a[i][j];
}
}
}

void sumCal(int n,int a[][]){
int sum=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
sum=sum+a[j][i];
}
}
}

据我所知,这取决于内存布局,内存是按行主布局还是列主布局。这是正确答案吗?

最佳答案

一个主要问题确实是矩阵是以行优先还是列优先格式布置的。这是由 C 标准定义的;这不是留给编译器作者的事情。另一个主要问题是数组的大小。如果它小到足以放入高速缓存,那么使用哪种机制并不重要,但如果它太大而无法放入高速缓存,那么一种机制比另一种快得多。

这是什么?好吧,在维基百科上快速搜索 Row-major Order显示 C 使用行优先顺序。

关于c - 所用时间 :Row major sum Column major sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19872481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com