c++ - 二维数组访问时间比较

标签 c++ c performance

我有两种构造二维数组的方法:

int arr[NUM_ROWS][NUM_COLS];
//...
tmp = arr[i][j]

和扁平化数组

int arr[NUM_ROWS*NUM_COLS];
//...
tmp = arr[i*NuM_COLS+j];

我正在做图像处理,所以即使是访问时间上的一点点改进也是必要的。哪个更快?我在想第一个,因为第二个需要计算,但是第一个需要两个寻址,所以我不确定。

最佳答案

我认为没有任何性能差异。在这两种情况下,系统将分配相同数量的连续内存。对于计算 i*Numcols+j,您可以为 1D 数组声明进行计算,或者系统将在 2D 情况下进行计算。唯一关心的是易用性。

关于c++ - 二维数组访问时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154761/

相关文章:

performance - 运行 MSTest 测试的性能分析

c++ - Gitlab CI Runner 预定义宏 MSBuild

c++ - OpenCV imread 外来字符

c++ - 如何使用 CMake 将 C++ 程序与 Boost 链接

c++ - Linux 中 C++ 代码留下的文件句柄

javascript - 如何检查我的 JavaScript 是否正确缓存

java - Lucene 索引性能

C++:为什么程序从输入文件中读取最后一个空白作为元素

C程序切换语句

c - 替换密码无法解码,代码被杀死