我有一个非常大的 A* 寻路函数,它经常被调用并且必须放在另一个线程中,否则它会使我的游戏卡顿。我来自 Java 背景,最近阅读了有关 HashMap(基本上相当于 NSDictionary)的速度以及您可以使用的不同实现的讨论。我很好奇 NSDictionary 有多快,以及是否有人发现它是处理大量即时和临时对象分配的可行选择,或者它是否太慢了。
目前,我在 A* 算法中使用 NSMutableArray 作为打开和关闭列表 - 由于 O(1) setObject:forKey 和 removeObject:forKey,我将用 NSMutableDictionary 替换关闭列表,并且还创建一个 NSMutableDictionary “镜像”打开列表。路径数据存储在一个大的 NSMutableArray 中——我会保持原样,因为索引访问速度足够快(当然)。
所以我的问题是......这是否会显着提高速度,或者我应该推出自己的列表和/或地图?我只是不确定 NSDictionary做了什么,我想知道。