gpt4 book ai didi

c - 以 Row Major 或 Column Major 方式将多维数组存储在内存中有什么区别?

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

将多维数组以行优先或列优先方式存储在内存中有什么区别?

据我所知,'C' 似乎遵循 Row Major 风格。

出于好奇,我想知道,一种风格比另一种风格有什么好处吗?

最佳答案

一般来说,您可以互相模仿,因此彼此之间没有内在优势。然而,缓存实现通常将引用的局部性视为估计内存位置是否将很快被访问的积极因素。这可能会对性能产生影响。例如,在行优先实现中,此代码片段:

int sum = 0;
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
sum += a[i][j];

可能比:

int sum = 0;
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
sum += a[j][i];

您应该尝试设计您的算法,以便在行优先环境中的行和列优先环境中的列上编写外部循环,以最大限度地减少缓存未命中。

关于c - 以 Row Major 或 Column Major 方式将多维数组存储在内存中有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4384644/

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