【发布时间】:2009-10-21 17:34:43
【问题描述】:
我有一个非常大的 A* 寻路函数,它被频繁调用并且必须放在另一个线程中,否则它会使我的游戏卡顿。我来自 Java 背景,最近阅读了有关 HashMap(基本上相当于 NSDictionary)的速度以及您可以使用的不同实现的讨论。我很好奇 NSDictionary 有多快,是否有人发现它是处理大量即时和临时对象分配的可行选择,或者它是否太慢了。
目前我使用 NSMutableArray 作为 A* 算法中的打开和关闭列表 - 由于 O(1) setObject:forKey 和 removeObject:forKey,我将用 NSMutableDictionary 替换关闭列表,并创建一个NSMutableDictionary “镜像”打开的列表。路径数据存储在一个大的 NSMutableArray 中 - 我会保持原样,因为索引访问速度足够快(当然)。
所以我的问题是......这会显着提高速度还是我应该推出自己的列表和/或地图?我只是不确定 NSDictionary 做了什么,我想知道。
【问题讨论】:
-
这里有一篇比较 NSDictionary、NSSet 和 NSArray 的好文章:cocoawithlove.com/2008/08/nsarray-or-nsset-nsdictionary-or.html
标签: iphone objective-c optimization artificial-intelligence a-star