【发布时间】:2020-06-12 23:40:25
【问题描述】:
我正在制作一个游戏,我决定为每个游戏对象分配一个 int 实体 ID,这样我就可以轻松地搜索它们,而不必线性搜索一个列表或更糟糕的是,许多列表。这个想法受到 ECS 模式的启发,我想如果我确保在它们被销毁时重新使用 int,这将有助于将所有数据在内存中保持紧密并减少缓存未命中。 (我知道这更多地取决于访问顺序,只是在这里抽象地思考)。问题是我现在开始怀疑自己,而且我读了很多书,以至于我无法将这些想法直接记在脑海中。
问题本质上是如果我不断地向Dictionary<int, SomeClass> 添加更高编号的键,那么速度/内存使用情况会比我尝试重复使用更低编号的情况更糟吗?
注意:我觉得答案将是“编写自己的课程”,但我试图避免这种情况,如果我不理解这个概念,我认为我不会做得很好。
【问题讨论】:
-
简短的回答是你需要尝试一下看看。
-
我发现很难写出不被关闭的好问题,所以我重写了三遍以使其更简洁,在其中一个版本中我删除了解释行我不知道如何找出一个好的测试,这就是为什么我在字典如何存储数据的基本概念方面寻求帮助。
-
您可以查看
Dictionary的源代码以了解其工作原理。但老实说 - 分析将是关键,看看这些好处是否真的发生了......
标签: c# unity3d optimization memory game-engine