GopherCon 2022: Jin Lin - Profile-Guided Optimization in the Go Compiler

preview_player
Показать описание
Inefficiencies in Go programs can be isolated via profiling tools such as pprof and linux profiler perf. Such tools can pinpoint source code regions where most of the execution time is spent. Unlike other optimizing compilers such as LLVM, the Go compiler does not yet perform Profile-Guided Optimization(PGO). PGO uses information about the code’s runtime behavior to guide compiler optimizations such as inlining, code layout, etc. PGO can improve application performance in the range of 15-30% [LLVM]. In this Lightning Talk, we extend the Go compiler with PGO. Specifically, we incorporate the profiles into the compiler frontend, backend, and linker to perform profile-guided inlining, code specialization, basic block layout, and function reordering optimizations. The format of the profile file consumed by our PGO is identical to the protobuf format produced by the pprof tool. This format is rich enough to carry additional hardware performance counter information.

Рекомендации по теме