gpt4 book ai didi

c++ - 如何找出哪个嵌套for循环更好?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:07:31 24 4
gpt4 key购买 nike

有人问我一个问题:以下两种情况中哪一种最快:

情况一:假设int count = 0;

for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 5; j++)
{
count++;
}
}

情况2:假设int count = 0;

for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 10; j++)
{
count++;
}
}

在这两种情况下,count 的最终值为 50。但是我不确定哪个会更快?我认为 CASE II 更快但不确定...

如果有人能对它有所启发,那就太好了。哪个更快,为什么?

最佳答案

这是我能想到的唯一一个例子,你在哪里迭代哪个变量很重要

int array[n][m];
//fast
for (int i=0;i<n;i++)
{ for(int j=0;j<m;j++)
{ count+=array[i][j];
}
}
//slow
for (int i=0;i<m;i++)
{ for(int j=0;j<n;j++)
{ count+=array[j][i];
}
}

第二个较慢,因为您不会一个接一个地迭代内存中的位置,而是因为您一次跳转 m 个位置。处理器缓存位于访问位置之后的内存位置。

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

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