gpt4 book ai didi

C 指针数组与原始值数组 : performance and memory

转载 作者:行者123 更新时间:2023-12-02 08:49:32 24 4
gpt4 key购买 nike

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

如果我将它们存储为一个原始值数组:gameObject objects[64][64][8],它们都存储在一个地方,但是每个对象都会被分配,无论是否或不使用它。
但是,如果我将数组分配为指针数组:gameObject *objects[64][64][8],将不会分配未使用的对象(可能超过整个数组的一半)直到需要它们,减少内存影响,但可能会更慢,因为对象遍布内存

考虑到性能和内存使用之间的权衡,哪种方法最好?我的担忧是否成立?

最佳答案

[the second approach] might be slower because the objects are all over the memory

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

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

关于C 指针数组与原始值数组 : performance and memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9532806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com