gpt4 book ai didi

c - 哪个 for 循环更好?

转载 作者:行者123 更新时间:2023-11-30 18:25:36 25 4
gpt4 key购买 nike

以下问题是在 Microsoft 分类测试中提出的。我无法弄清楚哪一个会更好。有人可以帮助我吗?

代码1:

int MAX=1000;
int a[MAX][MAX];
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
a[j][i]=i*j;

代码2:

int MAX=1000;
int a[MAX][MAX];
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
a[i][j]=i*j;

哪个是正确的?

  1. 代码 1 更快
  2. 代码 2 更快
  3. 两者在 RISC 架构中是相同的
  4. 两者大致相同

最佳答案

假设您使用的是 C/C++,代码 2 可能会更快。 C/C++ 按行优先顺序存储数组,这意味着最右边维度的变化使内存地址的变化最小。因此,CPU 缓存可以帮助提高代码的性能,并且您不必担心页面错误(代码 2 按单调顺序访问内存地址,因此一旦程序读取完包含数据的页面之一,它就会不必再查看该页面)。

关于c - 哪个 for 循环更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26744654/

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