C指针数组与原始值数组:性能和内存

Gre*_*reg 2 c arrays performance memory-management

我有一个3D游戏,其中对象存储在3D阵列中.每个对象都是一个struct相对较大的对象(几兆字节,准确地说是4,194,304字节).

如果我把它们保存为原始值的数组:gameObject objects[64][64][8],它们都存储在一个地方,但每个对象分配,无论它是否被使用.
但是,如果我将数组分配为指针数组:gameObject *objects[64][64][8]未使用的对象(可能超过整个数组的一半)在需要之前不会被分配,从而减少内存影响,但可能会因为对象全部而变慢在记忆中

考虑性能和内存使用之间的权衡,哪种方法最好?我的担忧有效吗?

NPE*_*NPE 5

[第二种方法]可能会更慢,因为对象遍布内存

由于每个对象的大小都是4MB,因此跨不同对象的引用位置几乎肯定不是问题.采用第二种方法.

如果你给我们的数字是正确的,一个完全填充的128x128x128 4MB对象阵列将需要大约8TB的RAM,这使得第一种方法在典型硬件上有些不可行.;-)