我有一个2D阵列.我需要尽快对它执行一些操作(函数将被称为每秒十几次,所以使其高效会很好).
现在,让我们说我想得到元素A[i][j],简单地使用A[i][j]和*(A+(i*width+j))(忽略我需要计算i*width + j的事实,让我说我已经有这个值)的速度有什么不同吗?
打开所有优化后,应该没有区别 - 不仅在时序上,而且在编译器为这两个结构生成的代码中也是如此.
与程序员的观点最大的区别在于可读性.第一构建立刻告诉他在处理一个二维数组的读者,而第二个需要一些思考(它是一个行优先的顺序,或列主顺序在哪里?width如何计算的?什么是选择这样做的原因更明显的2D数组语法?).这就是为什么第一个结构在现实场景中更受欢迎的原因.