猿问

一维或二维阵列,什么更快?

一维或二维阵列,什么更快?

我需要表示一个2D字段(轴x,y),我面临一个问题:我应该使用一维数组还是2D数组?

我可以想象,一维数组(y+x*n)的重新计算索引可能比使用2D数组(x,y)慢,但我可以想象到1D可能在CPU缓存中。

我做了一些搜索,但只找到了关于静态数组的页面(并且声明1D和2D基本相同)。但是我的数组必须是动态的。

所以,什么是

  1. 更快,
  2. 较小(RAM)

动态一维阵列还是动态二维阵列?

谢谢:)


吃鸡游戏
浏览 429回答 3
3回答

开心每一天1111

一维和二维静态阵列尺寸:两者都需要同样数量的内存。速度:您可以假设没有速度差异,因为这两个数组的内存应该是连续的(整个2D数组应该显示为内存中的一个块,而不是分布在内存中的一组块)。(不过,这可能与编译器有关。)一维和二维动态阵列尺寸:2D数组将需要比一维数组稍多一点的内存,因为2D数组中指向分配的1D数组集所需的指针。(当我们谈论真正的大数组时,这个微小的点才是很小的。对于小型阵列,相对来说,微小位可能是相当大的。)速度:一维数组可能比2D数组更快,因为2D数组的内存不会是连续的,因此缓存丢失将成为一个问题。使用最有效和最符合逻辑的方法,如果您面临速度问题,那么重构。
随时随地看视频慕课网APP
我要回答