加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 系统 > 正文

有时我们不得不从细节的维度去改进程序

发布时间:2021-05-12 19:02:58 所属栏目:系统 来源:互联网
导读:性能优化可分为宏观和微观两个层面。宏观层面包括架构重构,而微观层面,则包括算法的优化,编译优化,工具分析,高性能编码等,这些方法是有可能独立于具体业务逻辑,因而有更加广泛的适应性,且更易于实施。 具体到性能优化的方法论,首先,应建立度量,你

性能优化可分为宏观和微观两个层面。宏观层面包括架构重构,而微观层面,则包括算法的优化,编译优化,工具分析,高性能编码等,这些方法是有可能独立于具体业务逻辑,因而有更加广泛的适应性,且更易于实施。

具体到性能优化的方法论,首先,应建立度量,你度量什么,你得到什么。所以,性能优化测试先行,须基于数据而不能凭空猜测,这是做优化的一个基本原则。搭建真实的压测环境,或者逼近真实环境,有时候是困难的,也可能非常耗费时间,但它依然是值得的。

有许多工具能帮助我们定位程序瓶颈,有些工具能做很友好的图形化展示,定位问题是解决问题的前置条件,但定位问题可能不是最难的,分析和优化才是最耗时的关键环节,修改之后,要再回归测试,验证是否如预期般有效。

什么是高性能程序?架构致广远、实现尽精微。

架构优化的关键是识别瓶颈,这类优化有很多套路,比如通过负载均衡做分布式改造,比如用多线程协程做并行化改造,比如用消息队列做异步化和解耦,比如用事件通知替代轮询,比如为数据访问增加缓存,比如用批处理+预取提升吞吐,比如IO与逻辑分离、读写分离等等。

架构调整和优化虽然收效很大,却因受限于各种现实因素,因而并不总是可行。

能不做的尽量不做、必须做的高效做是性能优化的一个根本法则,提升处理能力和降低计算量可视为性能优化的两个方向。

怎么让程序跑的更快?这要求我们充分利用硬件的各种特性,想方设法减少等待并且提高并发,提升CACHE命中率,使用更高效的结构和算法;而降低计算量,则可能意味着要跳出纯技术范畴,从产品和业务视角去审视:哪些功能是必须的,哪些功能是可选可配置的。

有时候,我们不得不从细节的维度去改进程序。通常,我们应该使用简单的数据结构和算法,但如有必要,就应积极使用更高效的结构和算法,不止逻辑结构,物理结构(实现)同样影响执行效率;分支预测、反馈优化、启发性以及基于机器学习编译优化的效果日益凸显;熟练掌握编程语言深刻理解标准库实现能帮助我们规避低性能陷阱;深入细节做代码微调甚至指令级优化有时候也能取得意想不到的效果。

有时候,我们需要做一些交换,比如用空间置换时间,比如牺牲一些通用性可读性换取高性能,我们只应当在非常必要的情况下才这么做,它是权衡的艺术。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读