为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C
吃鸡游戏 2019-07-11 20:27:12
一维或二维阵列,什么更快?我需要表示一个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数组的内存不会是连续的,因此缓存丢失将成为一个问题。


使用最有效和最符合逻辑的方法,如果您面临速度问题,那么重构。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 428 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信