2019独角兽企业重金招聘Python工程师标准>>>

AStar寻路1-实现基本功能  的性能优化篇

优化方法,因为为了查看代码的profiler,因此用Unity来实现图形化,VS的c#有性能测试工具,根据热点函数来寻找瓶颈点和优化策略。

通过VS的性能测试工具,得出了上篇的热点函数是排序相关和估值函数。

A星寻路得到的路径,大部分情况下不会是最短路径,但是肯定是接近最短路径,只有每次的估计值是真实最短路径的值,那么得出的才会是最短路径。

原因是A星选择的贪心策略存在的误差是估值得来的,而该点的f值只会计算一次会一直用到寻路点直到终点,而不会随时调整,然后排序。

因此A星的精度和速度和估值函数的算法很重要,常见的几种估值方法

1.曼哈顿距离法,目标点和垂直距离与纵向距离之和,

2.直线距离法,直接是2点的距离,缺点是开方CPU代价太大。但是得到的路径较为平滑,开销大概是曼哈顿的2倍左右

3.还有一种方法,综合了2和1的特点,基本思想是如下图的A到B点

搜索过程中,从空间来说,因为不确定是否存在路径,因此要保存完整的节点信息,最坏情况是没有路径,空间占用就是节点总数。重复寻路的话Node对象的复用避免new的频繁开销也是一个优化点

open表的排序从时间来说,每次插入操作都要保证open列表中是有序的,一种优化方案是使用二叉堆来保证open表的有序

通过数组实现,来快速索引节点在堆中的位置做插入操作

二叉堆的相关知识不在展开。

转载于:https://my.oschina.net/kkkkkkkkkkkkk/blog/1162719

AStar寻路2-性能优化相关推荐

  1. 光速AStar寻路算法(C++)

    光速AStar寻路算法(C++) 一.最终效果 可以看到,我创建了500个小动物,也有110的FPS.虽然它们并不是每一帧都在计算寻路,但是平均下来不卡顿也不错了.我是i7 6700 + GT 720 ...

  2. 揭秘重度MMORPG手游后台性能优化方案

    本文节选自<2018腾讯移动游戏技术评审标准与实践案例>手册,由腾讯互娱工程师王杰分享<仙剑奇侠传online>项目中游戏后台的优化经验,深度解析寻路算法.视野管理.内存优化. ...

  3. 移动游戏性能优化建议与字体剥离精简工具

    / 在 Unity 中制作游戏时对动态字体的剥离和精简是现在常用的手段,现在有两篇博客是大家阅读和参照较多的,分别是 如何精简Unity中使用的字体文件 和 FontPruner 字体精简工具.他们各 ...

  4. 移动游戏性能优化通用技法

    1. 前言 很多年前就想将这些年工作中积累的优化经验撰写成文章,但懒癌缠身,迟迟未动手,近期总算潜下心写成文章. 涉及到具体优化技巧时,我会尽量阐述原理和依据,让读者知其然也知其所以然. 要完全读懂这 ...

  5. CocosCreator客户端优化系列(四):CPU占用及性能优化

    来自:https://blog.csdn.net/zzx023/article/details/88991314 CocosCreator客户端优化系列(四):CPU占用及性能优化 这篇文章是优化系列 ...

  6. unity移动端性能优化技术整理(持续更新)

    目录 Overview 性能优化主要针对四大类问题 填充率 发热量 功耗比 瓶颈可能性的顺序 性能分析工具 性能测试方法 确定瓶颈 CPU瓶颈 GPU瓶颈 确定顶点瓶颈 确定片元瓶颈 确定带宽瓶颈 增 ...

  7. 如何在Unity中实现AStar寻路算法及地图编辑器

    文章目录 AStar算法 简介 实现 Node节点 节点间的估价 算法核心 邻节点的搜索方式 地图编辑器 简介 实现 绘制地图网格 障碍/可行走区域 地图数据存储 AStar算法 简介 Unity中提 ...

  8. kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势

    陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...

  9. MegEngine推理性能优化

    MegEngine推理性能优化 MegEngine「训练推理一体化」的独特范式,通过静态图优化保证模型精度与训练时一致,无缝导入推理侧,再借助工业验证的高效卷积优化技术,打造深度学习推理侧极致加速方案 ...

最新文章

  1. AI、5G、小程序、AIoT纷纷迎来高峰,下一步开发者们要怎么办?
  2. Nginx upstream的5种权重分配方式分享
  3. IOS开发基础之微博项目第1天-OC版
  4. mysql 搜索正则表达式_[MySQL] 用正则表达式进行搜索
  5. 初识GaussDB(for Cassandra)
  6. java中类的接口是什么_Java中的接口知识汇总
  7. 软件测试基础课程学习笔记6--测试执行的几点技巧
  8. oracle中特殊字符处理
  9. 数组元素的填充与替换、排序和复制
  10. #IB TWS编程手记——03-关于IB合约的一二三
  11. 小程序发布上线全流程(包含小程序怎么通过审核)
  12. 用PHPphpstudy写一个可以登录的简单网页
  13. 红烧鸡翅(简单又好吃)
  14. 全基因组选择中准确性的影响因素
  15. 一套WPF+EF+SQLServer 会员卡管理系统源码
  16. 微信小程序AR扫描识别图(支持多图片)加载3D模型及其动画
  17. 教你使用caret包(一)--数据预处理
  18. android 中篇 文章推荐
  19. 怎样让一个正常人理解“线性代数”。几乎花掉我全部百度金币下来的文章。
  20. CV深度学习项目调试开发过程中报错记录【持续更新】

热门文章

  1. 开课吧Java:MyBatis和Hibernate的区别
  2. ECMAScript6(17):Class类
  3. spring+hibernate:在applicationCOntext.XML中配置C3P0参数说明
  4. PS替换图片图标操作
  5. 去除本机利用ssh协议登陆远程机器的痕迹
  6. static_cast 与reinterpret_cast
  7. AutoLISP恢复系统变量到默认值
  8. 利用python中的csv库读写csv文件
  9. 关于并查集的Python实现代码
  10. 伴随矩阵,可逆矩阵相关思路分析之一