原文发布于2023年2月8日在构建Go二进制文件时,Go编译器会进行优化,以尽可能生成性能最佳的二进制文件。例如,常量传播可以在编译时对常量表达式进行求值,避免了运行时的计算开销;逃逸分析可以避免对局部作用域对象进行堆分配,从而减少了垃圾回收的负担;内联则将简单函数的代码体复制到调用处,通常能够进一步优化调用处的代码(例如额外的常量传播或更好的逃逸分析)。
PGO/FDO通过收集和分析运行时的性能数据,使得编译器能够更准确地了解代码的执行特性,从而进行更精细的优化。通过结合静态分析和动态运行时数据,PGO/FDO可以产生更优化的代码,提高程序的性能和效率。这种技术在提高大型复杂应用程序的性能方面非常有用,特别是对于高度频繁执行的代码路径进行优化。Go 1.20中包含了PGO的初步支持,作为预览版本提供。请参阅profile-guided optimization user guide以获取完整的文档。尽管距离在生产环境中使用还有一段距离,但仍希望大家在工作中使用,并反馈遇到的问题或意见。
原文中效率提升了2.6%文中的代码可以在这里找到。
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |