嵌套for循环的效率具有大不相同的计数

时间:2015-09-14 02:27:17

标签: performance loops for-loop

鉴于a远大于b

for (i = 0; i < a; i++)
    for (k = 0 k < b; k++) 

快于

for (i = 0; i < b; i++)
    for (k = 0 k < a; k++)

我觉得前者会更快,但我似乎无法理解这一点。

1 个答案:

答案 0 :(得分:2)

那真的取决于你做了什么。在不知道正在做什么的情况下很难进行运行时分析。话虽如此,如果您使用此代码遍历大型数组,则更重要的是遍历每一行中的每一列而不是反之亦然。

[0] [1] [2]

[3] [4] [5]

[6] [7] [8]

在内存中确实是[0] [1] [2] [3] [4] [5] [6] [7] [8]。

当内存访问靠近时,您的计算机缓存提供了更大的优势,并且通过内存顺序进行而不是跳过行提供了更多的位置。