09|破解性能谜题:性能优化的五层境界
郑建勋
你好,我是郑建勋。
俗话说:“九层之台,起于累土”,在上节课,我们搭建起了 Go 程序性能优化的分层分析范式,并讲解了系统设计与程序设计层面需要考虑的性能问题。
在这节课,我将更进一步,分析一下影响高性能程序的底层基石:代码实施、操作系统与硬件。分析如何在这些层面进行设计和调优,最终实现高性能的目标。
让我们先从代码实施阶段讲起。
代码实施级别
代码实施,简单来说就是实际的代码开发。为了满足特定的目标,我们要在代码的设计、开发以及最终阶段对性能进行合理甚至是极致的优化。
编写代码时的性能优化有三层境界:
合理的代码;
刻意的优化;
危险的尝试。
合理的代码
合理的代码看起来非常自然,就像是从优秀开发者的指尖自然流淌出来的,但这样的代码对开发者的个人素质要求却极高。由于不同开发者在语言理解和程序设计上的差异,他们开发出来的代码常常风格迥异。这就需要一些制度和规范来帮助我们写出更优雅、高效、易懂的代码。
这些规范涉及程序开发的方方面面,包括目录结构规范、测试规范、版本规范、目录结构规范、代码评审规范、开发规范等等。这部分你可以参考一下UBER 开源的 Go 语言开发规范。有时只需要遵守一些简单的规则,就能够大幅度减少未来在性能方面的困扰(我在后面将会给出一版更详细的 Go 语言开发规范)。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了性能优化的关键要点,从代码实施、操作系统与硬件等底层基石入手,分析了高性能程序的设计和调优方法。作者提出了三种性能优化境界:合理的代码、刻意的优化和危险的尝试。合理的代码需要遵守规范,对算法和数据结构进行设计改造,以及进行空间换时间的trade-off。刻意的优化涉及到程序瓶颈的定位和解决,需要使用工具如pprof、trace、dlv、gdb等进行性能分析和优化。而危险的尝试则涉及到一些特别的优化手段,如CGO技术、unsafe库操作指针以及汇编代码的使用。这些优化手段需要开发者在权衡利弊后谨慎使用。 文章还介绍了操作系统级别的性能优化,强调了操作系统对程序性能的深刻影响,以及如何利用工具如TOP命令、mpstat命令和perf等进行资源利用情况的观察和分析。此外,容器化时代对性能问题的新挑战也得到了探讨,提出了Cgroup和Namespace技术构建的轻量级虚拟容器,以及对操作系统观测手段的一些误导和解决方法。最后,文章还提到了硬件级别的性能优化,强调了硬件的性能决定了处理速度的上限,以及有效利用硬件特性能加速软件运行的重要性。 总的来说,本文内容丰富,涵盖了性能优化的多个方面,为开发者提供了全面的指导和方法,有助于他们更好地理解和应用性能优化的关键技术。文章通过深入浅出的方式,帮助读者了解性能优化的重要性以及在代码、操作系统和硬件层面的具体优化方法,为开发者提供了宝贵的指导和思路。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
《Go 进阶 · 分布式爬虫实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- 范飞扬课后思考题:现代IDE都支持语法检测,但不支持一些最佳实践。最近用了Copilot,发现它的代码提示非常强大,也可以作为“规避代码书写中的错误”的工具。老师怎么看Copilot? 它适合在学习中使用吗?它适合在工作中使用吗?
作者回复: Copilot这种释放生产力的手段,是未来的一种趋势。
2022-10-31归属地:北京23 - 8.13.3.27.30太抽象了 后续有没有实战 手把手一样的 练习
作者回复: 15讲后进入实战
2022-11-10归属地:北京2 - 那时刻文中提到:如何通过 pprof、trace、dlv、dgb 等工具。这里的dgb应该是gdb么?
作者回复: 笔误,我尽快修复它
2022-11-08归属地:北京1 - Realm1 编辑器很多提供lint,如goland安装一些插件,错误、警告⚠️都提示出来了; 2 可以配置golangci-lint ,确定哪些需要强制检查; 3 配合CI,在push代码的时候,强制检查; 确定原则、形成规范、逐步推广、优化.2022-10-29归属地:浙江3
- 徐海浪思考题: SonarQube等代码扫描工具2022-10-30归属地:广东12
- 奕各种 linter2022-10-29归属地:广东1
收起评论