c - 哪段代码效率更高?

标签 c performance

初始化一个100×100的二维数组的所有元素,有两种方式:

方法一:

int a[100][100];
for(i=0; i<100; i++){
    for(j=0; j<100; j++){
        a[i][j] = 10;
    }
}

方法二:

int a[100][100];
for(j=0; j<100; j++){
    for(i=0; i<100; i++){
        a[i][j] = 10;
    }
}

现在我的问题是哪种方法更有效,为什么?

最佳答案

第一种方法,因为它会顺序访问数组。

C 以行优先顺序存储二维数组,这意味着 a[i][j] 将与 a[i][j+1] 相邻,但不与 a[ 相邻i+1][j].

还有另一种说法(概括为 >2 维)是最右边的索引在内存中是相邻的。或者递增索引意味着您必须跳过所有维度到您正在递增的索引的右侧。

关于c - 哪段代码效率更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10932950/

相关文章:

c - 在不关闭套接字的情况下停止阻塞接收

performance - 最新至强上的 FP 密集型超线程性能

c# - 如何使用Application.targetFrameRate设置目标帧速率以修复不良帧速率(vsync)

java - 执行 2 个或更多 Runnable 会导致性能问题

c - 分析和提高嵌入式系统性能的步骤/策略是什么?

c - 语义错误

c - C上的浮点异常,无法解决

c - 根据位置每 3 个元素从数组中删除元素

performance - 是否可以查看/优化 Hibernate 查询计划?

c - 从单链表中删除元素