13 | 编译期优化:只有修改业务代码才能提升系统性能?
尉刚强
你好,我是尉刚强。
我们知道,所谓的编译,就是把我们编写的软件代码,变成计算机可以识别的汇编代码的过程,而这个编译过程会直接影响到最终运行的软件性能。所以今天这节课,我们就一起来聊聊编译期优化对软件性能的影响。
事实上,编译期优化是做软件性能优化时最常见的优化手段,它的最大优势就是可以在不用修改业务代码的场景下来提升软件的性能。另外,它也可以让开发人员以较低的成本来获取一定的性能收益,所以编译期优化也算是高性能软件系统研发中不可或缺的一个环节。
不过同时它也存在局限性,那就是需要开发人员对语言实现和底层编译过程都有比较深入的理解,否则就会很容易漏掉一些优化方向,导致发挥不出最佳的性能优化效果。举个简单的例子,在我以前参与的一个 C++ 性能优化项目中,只是帮忙调整配置了关于内联相关的编译配置,就直接给产品带来了比较明显的性能提升,而团队之前的性能优化就没有考虑过这个方向。
而且除此之外,不同的编程语言,受制于其语言内置设计机制的差异,导致在编译期优化时的关注点和优化方法也有很大的不同。比如,有些编程语言(如 Java、Python、Ruby 等)将内存管理内置到了语言中,那么在做编译期优化时就需要重点关注内存空间这部分的优化。另外,由于编译期优化和语言的相关性很大,我也不可能逐一介绍。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了编译期优化对软件性能的影响,以及C/C++和Java编译期优化的常用手段和关键原则。在C/C++中,通过调整编译配置选项和选择编译辅助函数来优化生成软件的执行速度。文章还提到了不同编译优化级别对程序性能、大小和可调试能力的影响,以及建议在发布软件版本时至少打开-O2级别的优化。对于Java,重点在JVM的堆空间配置和JIT的优化,以提升软件执行速度。文章还介绍了JVM的堆空间配置和GC算法选择,以及JIT优化的相关配置。总之,本文为读者提供了一些实际的优化指导,适用于需要深入了解编译期优化的开发人员。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能优化高手课》,新⼈⾸单¥59
《性能优化高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- Peter启动可执行程序,并运行正常业务逻辑,这时候会生成很多 cc.gcda 文件,它们会记录相关的分支预测信息。 --> 老师,这个地方是不是写错了,应该是生成cpp.gcov文件吧,我自己试了下,只有.gcda 没有cpp.gcda2022-04-22
- Peter针对C++,我怎么检测发现这些编译选项是否要打开还是关闭,通过打开或者关掉选项后,性能的数据对比?2021-08-23
收起评论