【发布时间】:2016-04-25 11:55:29
【问题描述】:
基本上我不确定如何存储 3D 数据结构以实现最快的访问,因为我不确定多维数组的幕后情况。
注意:数组每次都是一个常数且已知大小,每个元素都是 16 位。
选项一是拥有一个多维数组data[16, 16, 16],只需通过data[x, y, z] 访问选项二是拥有一个单维数组data[16 * 16 * 16],并通过data[x + (y * 16) + (z * 16 * 16)] 访问。
因为每个元素应该只有 16 位长,而且我怀疑多维数组会在内部存储大量对其他数组的引用,每个元素至少 32 位,这会浪费很多内存.但是,我担心它可能比每次运行选项二中指定的方程更快,速度是这个项目的关键。
那么,谁能告诉我,与内存消耗的差异相比,速度差异有多大?
【问题讨论】:
-
benjamin-james-drury,我会稍微改变一下问题,以强调每个元素都是 16 位的事实,因为它使问题与类似问题不同,并且对答案产生了有趣的看法
-
我之所以不提及现有问题是因为我的具体案例,但我了解到我的想法是不正确的,所以也许我应该默认他们。无论如何,感谢所有提供意见的人,我很感激,并且确实会赛马看看哪个更快。
标签: c# arrays multidimensional-array unity3d jagged-arrays