iphone - 优化 A* Pathfinding iPhone - NSDictionary 能解决问题吗?

标签 iphone objective-c optimization artificial-intelligence a-star

我有一个相当大的 A* 寻路函数,它会被频繁调用,并且必须放入另一个线程中,否则它会让我的游戏卡顿。我有 Java 背景,最近阅读了一篇关于 HashMap(本质上相当于 NSDictionary)的速度以及可以使用的不同实现的讨论。我很好奇 NSDictionary 有多快,以及是否有人发现它是处理大量即时和临时对象分配的可行选择,或者它是否太慢了。

目前,我在 A* 算法中使用 NSMutableArray 作为打开和关闭列表 - 由于 O(1) setObject:forKey 和 removeObject:forKey,我将用 NSMutableDictionary 替换关闭列表,并且还创建一个NSMutableDictionary “镜像”打开列表。路径数据存储在一个大的 NSMutableArray 中 - 我会保持原样,因为索引访问足够快(当然)。

所以我的问题是...这是否会带来明显的速度提升,或者我应该推出自己的列表和/或 map 吗?我只是不确定 NSDictionary 做什么,我想知道。

最佳答案

如果您想知道如何优化 A*,我首先会问您是否使用与平台无关的扩展,例如迭代深化 A* (又名 IDA*),您使用的是哪种启发式方法,以及您是否使用缓存(换位表、模式数据库)。目前您提出的问题太接近实际情况了,因为您正在优化系统的某些部分,而这些部分可能不会阻碍您。

看看these course slides (特别是 lecture 10lecture 11 )

关于iphone - 优化 A* Pathfinding iPhone - NSDictionary 能解决问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1602360/

相关文章:

iphone - TouchXML 命名空间解析?

ios - 在 El Capitan beta 5 上提交应用程序时 xCode 崩溃

objective-c - CGAffineTransform 身份和自动布局

iphone - 将 native iphone 相机缩放 slider 和 youtube 播放器 Controller 添加到我的应用程序

mysql - 帮助简化此 MySQL 查询

unity-game-engine - 当 UI 覆盖屏幕时,将相机剔除 mask 设置为 Nothing 好吗?

ios - 在 MapView 中搜索注释

ios - Xcode 中的 "Requires full screen"选项对仅限 iPhone 的应用程序有何影响?

ios - 自定义 UITableViewCell 中 UITextField 的 resignFirstResponder 问题

java - 著名压缩算法(LZ78)执行缓慢