性能优化高手课
尉刚强
资深软件设计咨询顾问
19574 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 31 讲
性能优化高手课
15
15
1.0x
00:00/00:00
登录|注册

13 | 编译期优化:只有修改业务代码才能提升系统性能?

你好,我是尉刚强。
我们知道,所谓的编译,就是把我们编写的软件代码,变成计算机可以识别的汇编代码的过程,而这个编译过程会直接影响到最终运行的软件性能。所以今天这节课,我们就一起来聊聊编译期优化对软件性能的影响。
事实上,编译期优化是做软件性能优化时最常见的优化手段,它的最大优势就是可以在不用修改业务代码的场景下来提升软件的性能。另外,它也可以让开发人员以较低的成本来获取一定的性能收益,所以编译期优化也算是高性能软件系统研发中不可或缺的一个环节。
不过同时它也存在局限性,那就是需要开发人员对语言实现和底层编译过程都有比较深入的理解,否则就会很容易漏掉一些优化方向,导致发挥不出最佳的性能优化效果。举个简单的例子,在我以前参与的一个 C++ 性能优化项目中,只是帮忙调整配置了关于内联相关的编译配置,就直接给产品带来了比较明显的性能提升,而团队之前的性能优化就没有考虑过这个方向。
而且除此之外,不同的编程语言,受制于其语言内置设计机制的差异,导致在编译期优化时的关注点和优化方法也有很大的不同。比如,有些编程语言(如 Java、Python、Ruby 等)将内存管理内置到了语言中,那么在做编译期优化时就需要重点关注内存空间这部分的优化。另外,由于编译期优化和语言的相关性很大,我也不可能逐一介绍。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了编译期优化对软件性能的影响,以及C/C++和Java编译期优化的常用手段和关键原则。在C/C++中,通过调整编译配置选项和选择编译辅助函数来优化生成软件的执行速度。文章还提到了不同编译优化级别对程序性能、大小和可调试能力的影响,以及建议在发布软件版本时至少打开-O2级别的优化。对于Java,重点在JVM的堆空间配置和JIT的优化,以提升软件执行速度。文章还介绍了JVM的堆空间配置和GC算法选择,以及JIT优化的相关配置。总之,本文为读者提供了一些实际的优化指导,适用于需要深入了解编译期优化的开发人员。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能优化高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • Peter
    启动可执行程序,并运行正常业务逻辑,这时候会生成很多 cc.gcda 文件,它们会记录相关的分支预测信息。 --> 老师,这个地方是不是写错了,应该是生成cpp.gcov文件吧,我自己试了下,只有.gcda 没有cpp.gcda
    2022-04-22
  • Peter
    针对C++,我怎么检测发现这些编译选项是否要打开还是关闭,通过打开或者关掉选项后,性能的数据对比?
    2021-08-23
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部