优化(Optimization)和剖析器(Profiler)概要

博客围绕程序代码优化展开,阐述了优化的必要性、时机、程度和对象。指出应针对消耗90%资源的10%代码优化,可借助Profiler找热点。介绍了Profiler的工作原理,分被动和主动两种,各有优缺点,且测量结果可能与实际有偏差。
为什么要优化?
能够运行的程序不一定是可以发布的程序,功能齐全而且能够以用户可以接受的效率运行、消耗可以接受的资源的才是可以发布的程序,所以,在保证程序功能正确齐全的前提下,可能还需要做代码优化。


何时优化?
过早的优化往往带来代码可读性下降,引入bug,一般在项目后期才考虑“系统的优化”,但是在coding的过程中,程序员应该有意识的采用高效的算法,在一些编程细节上采用优化的代码风格。程序整个体系结构对效率的影响相当大,所以,不要以为优化只是最后的事情。


优化到什么程度?
需要一个benchmark,设立优化的目标,一般以用户的体验为基准,不能盲目的优化。


优化什么代码?
10%-90%现象,10%的代码消耗的90%的资源,只有对这10%的代码进行优化才有意义。对于整个程序影响不大的代码,有时间优化当然好,但是没有必要放在高优先级位置。


如何找到那10%的代码?
简单的程序可以通过肉眼观察发现热点(hotspot,最消耗时间和资源的代码段),复杂的程序就超出人的智力范围了,需要Profiler来发现热点。而且,优化的过程就是发现热点,修改代码,检查性能的循环过程,很有可能程序员主管上觉得提高性能的改变实际上降低了性能,科学的办法就是用profiler发现热点,分析热点,修改热点代码,然后马上用profiler重新测量热点执行效率,验证代码修改是否真的提高效率。


什么是Profiler?
Profiler也就是剖析器,它能够获得被profile的程序运行数据,比如函数或者指令的执行时间和执行次数,程序员由此可以判断哪些函数或者指令是热点。


Profiler的工作原理?
最有意思的部分:)

Profiler分两种,被动的和主动的。被动的Profiler对被剖析的程序不作任何修改,用取样(sampling)的方法获得运行数据;主动Profiler需要对程序进行一些修改。

被动的Profiler好比拿着秒表的教练,在一旁监测运动员成绩,不会对运动员有什么干扰。原理上,可以通过设置定时中断,每隔一段时间中断被剖析程序,读取相关数据,然后让其继续。这种采样的方式的精确度很大程度上取决于中断频率的选择,太频繁了会干扰程序的正常执行,不频繁又不会获得精确数据。从某Profiler的生产商的白皮书认为被动式Profiler缺点大于优点,鉴于这个生产商有自己的主动式Profiler,这点不敢完全苟同:)

主动式Profiler好比科技型教练,在运动员身上安上一些设备,然后通过这些设备全面了解运动员的速度、心跳、体温等等数据,获得的数据自然比用秒表获得的要多得多,但是如果放在运动员身上的数据太多,也会影响运动员的表现,从而获得不实的数据。主动式Profiler通过在source code或者object文件中插入一些小代码来记录程序运行数据,还有更加高级的Profiler既不修改source code,也不修改object文件,而是通过动态的把可执行代码拆开成中间结果,插入一些观测点,然后产生新的临时执行代码。

修改source code,可以是程序员显示的在代码中加入宏来实现,也可在预处理阶段插入,现在compiler的提供商一般都附送一个profiler,连gcc都有一个gprof。修改object文件差不多,只不过时机不同。

需要说明的是,主动式Profiler也可能导致测量结果和实际情况不符合,因为文件大小不一样,函数偏移不一样。

主动式Profiler能够获得函数或者代码行甚至机器语言命令的执行效率,有两个衡量方法,一个是执行时间,另一个是执行的机器时钟周期。执行时间很可能不准,因为插入的代码会消耗时间,系统中其他运行的程序也会占用CPU,但是对于函数级的代码段,可以通过多次运行,去掉最高分,去掉最低分,去平均值的方法获得近似结果,对于单条代码行或单条汇编代码,就不太合适了,应该以机器时钟周期为单位测量。不过,现在的CPU采用的流水线执行方式,当出现条件跳转时,获得的时钟周期也可能不准。

唉,优化真的不是容易活啊













内容概要:本文提出了一种基于瞬态三角哈里斯鹰算法(TTHHO)的多无人机协同集群在三维空间中的避障路径规划方法,旨在通过优化路径长度、飞行高度、威胁规避转弯角度等关键因素,实现以最低综合成本为目标的全局路径规划。该方法结合智能优化算法与多智能体协同机制,在复杂三维环境中有效解决动态障碍物规避与飞行安全性问题,并通过Matlab平台进行算法编码实现与仿真实验,验证了其在路径最优性、收敛速度避障能力方面的优越性能。研究涵盖了三维空间建模、目标函数构建、约束条件处理及多无人机协同策略设计,提升了无人机系统在实际应用场景中的自主导航与智能化决策水平。; 适合人群:具备一定编程基础,熟练掌握Matlab仿真环境,从事无人机路径规划、智能优化算法、多智能体协同控制等相关方向研究的科研人员、工程技术人员及研究生。; 使用场景及目标:① 实现多无人机在复杂三维环境下的协同避障路径规划,确保飞行安全与任务效率;② 研究基于哈里斯鹰算法及其改进版本(如TTHHO)的智能优化机制在路径规划中的应用;③ 推动多目标优化(路径最短、能耗最低、威胁最小、飞行平稳)下无人机自主导航系统的开发与落地; 阅读建议:此资源以Matlab代码实现为核心支撑,建议读者深入理解TTHHO算法原理的基础上,结合文中提供的仿真模型进行代码调试与参数调优,进一步探索不同环境设置约束条件下算法的适应性与鲁棒性,鼓励通过扩展威胁模型或引入通信延迟等现实因素开展深化研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值