一维或二维阵列,什么更快?我需要表示一个2D字段(轴x,y),我面临一个问题:我应该使用一维数组还是2D数组?我可以想象,一维数组(y+x*n)的重新计算索引可能比使用2D数组(x,y)慢,但我可以想象到1D可能在CPU缓存中。我做了一些搜索,但只找到了关于静态数组的页面(并且声明1D和2D基本相同)。但是我的数组必须是动态的。所以,什么是更快,较小(RAM)动态一维阵列还是动态二维阵列?谢谢:)
3 回答
开心每一天1111
TA贡献1836条经验 获得超13个赞
一维和二维静态阵列
尺寸:
两者都需要同样数量的内存。 速度:
您可以假设没有速度差异,因为这两个数组的内存应该是连续的(整个2D数组应该显示为内存中的一个块,而不是分布在内存中的一组块)。(不过,这可能与编译器有关。)
一维和二维动态阵列
尺寸:
2D数组将需要比一维数组稍多一点的内存,因为2D数组中指向分配的1D数组集所需的指针。(当我们谈论真正的大数组时,这个微小的点才是很小的。对于小型阵列,相对来说,微小位可能是相当大的。) 速度:
一维数组可能比2D数组更快,因为2D数组的内存不会是连续的,因此缓存丢失将成为一个问题。
- 3 回答
- 0 关注
- 428 浏览
添加回答
举报
0/150
提交
取消