【发布时间】:2012-03-19 21:42:46
【问题描述】:
如果我的游戏有一个 3D 世界,而且世界很大,所以需要分成块,如果有的话,128 字节块是否有主要的性能优势,比如 150 字节块?显然,chunks 中的对象仍然是整数字节大小。
即chunks[128][128][128] 比 chunks[150][150][150] 或 chunks[112][112][112] 快吗?之后是否还有其他副作用,例如过多的 RAM 浪费?还有其他需要考虑的因素吗?
我只是看到将所有内容存储在大小为 2 的幂的变量和数组中是一种惯例,但我不确定它是否有任何优点,以及是否可以更好地使用更多的人类数字,例如100 或 150。
【问题讨论】:
-
我认为这取决于数组的类型。非字节类型可能需要内存对齐。
-
在这种情况下,块中的每个对象都是 16 位,或者可能是另一个 2 的幂数(绝对是整数字节)。我想知道拥有 150 个 16 位对象是否比拥有 128 个对象慢(注意仍然有同样多的对象,它们只会被分成更多的部分)
-
假设您有 1000 人要运送,而您有可容纳 50 人的巴士。你认为什么更好?将人分成 50 人一组,或者将他们分成 72 人(或 38 人或其他)一组,然后在挤满公共汽车之前分成几组?
-
想象人们戴着不同颜色的帽子。如果您按与公交车容量不同的数字对他们进行分组,则每辆公交车都会有戴着不同颜色帽子的人。对数组“维度”使用 2 的幂可以提高每个数组组(从
index到就在index + 1之前)占用可以作为一个整体访问的一部分内存的机会。
标签: c arrays performance memory-management