AStar寻路2-性能优化
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-性能优化相关推荐
- 光速AStar寻路算法(C++)
光速AStar寻路算法(C++) 一.最终效果 可以看到,我创建了500个小动物,也有110的FPS.虽然它们并不是每一帧都在计算寻路,但是平均下来不卡顿也不错了.我是i7 6700 + GT 720 ...
- 揭秘重度MMORPG手游后台性能优化方案
本文节选自<2018腾讯移动游戏技术评审标准与实践案例>手册,由腾讯互娱工程师王杰分享<仙剑奇侠传online>项目中游戏后台的优化经验,深度解析寻路算法.视野管理.内存优化. ...
- 移动游戏性能优化建议与字体剥离精简工具
/ 在 Unity 中制作游戏时对动态字体的剥离和精简是现在常用的手段,现在有两篇博客是大家阅读和参照较多的,分别是 如何精简Unity中使用的字体文件 和 FontPruner 字体精简工具.他们各 ...
- 移动游戏性能优化通用技法
1. 前言 很多年前就想将这些年工作中积累的优化经验撰写成文章,但懒癌缠身,迟迟未动手,近期总算潜下心写成文章. 涉及到具体优化技巧时,我会尽量阐述原理和依据,让读者知其然也知其所以然. 要完全读懂这 ...
- CocosCreator客户端优化系列(四):CPU占用及性能优化
来自:https://blog.csdn.net/zzx023/article/details/88991314 CocosCreator客户端优化系列(四):CPU占用及性能优化 这篇文章是优化系列 ...
- unity移动端性能优化技术整理(持续更新)
目录 Overview 性能优化主要针对四大类问题 填充率 发热量 功耗比 瓶颈可能性的顺序 性能分析工具 性能测试方法 确定瓶颈 CPU瓶颈 GPU瓶颈 确定顶点瓶颈 确定片元瓶颈 确定带宽瓶颈 增 ...
- 如何在Unity中实现AStar寻路算法及地图编辑器
文章目录 AStar算法 简介 实现 Node节点 节点间的估价 算法核心 邻节点的搜索方式 地图编辑器 简介 实现 绘制地图网格 障碍/可行走区域 地图数据存储 AStar算法 简介 Unity中提 ...
- kali2020进入单模式_蚂蚁集团技术专家山丘:性能优化的常见模式及趋势
陈显铭(山丘) 读完需要 6分钟 速读仅需 2 分钟 陈显铭,花名山丘,就职于蚂蚁集团,对分布式应用架构.服务化.性能优化等有深入的理解.参与支付宝支付链路核心系统,设计.调优应用系统关键能力, 高效 ...
- MegEngine推理性能优化
MegEngine推理性能优化 MegEngine「训练推理一体化」的独特范式,通过静态图优化保证模型精度与训练时一致,无缝导入推理侧,再借助工业验证的高效卷积优化技术,打造深度学习推理侧极致加速方案 ...
最新文章
- AI、5G、小程序、AIoT纷纷迎来高峰,下一步开发者们要怎么办?
- Nginx upstream的5种权重分配方式分享
- IOS开发基础之微博项目第1天-OC版
- mysql 搜索正则表达式_[MySQL] 用正则表达式进行搜索
- 初识GaussDB(for Cassandra)
- java中类的接口是什么_Java中的接口知识汇总
- 软件测试基础课程学习笔记6--测试执行的几点技巧
- oracle中特殊字符处理
- 数组元素的填充与替换、排序和复制
- #IB TWS编程手记——03-关于IB合约的一二三
- 小程序发布上线全流程(包含小程序怎么通过审核)
- 用PHPphpstudy写一个可以登录的简单网页
- 红烧鸡翅(简单又好吃)
- 全基因组选择中准确性的影响因素
- 一套WPF+EF+SQLServer 会员卡管理系统源码
- 微信小程序AR扫描识别图(支持多图片)加载3D模型及其动画
- 教你使用caret包(一)--数据预处理
- android 中篇 文章推荐
- 怎样让一个正常人理解“线性代数”。几乎花掉我全部百度金币下来的文章。
- CV深度学习项目调试开发过程中报错记录【持续更新】