---
title: 常见的毕昇编译器优化-官方技术文章-鲲鹏社区
description: 介绍常见的毕昇编译器优化选项及使用常见
keywords: 常见的毕昇编译器优化,官方技术文章,鲲鹏社区,Ofast,LTO,Link Time Optimization,Wl,PGO
url: https://www.hikunpeng.com/developer/techArticles/20231212-7?envFlag=1
section: (其他)
---

# 常见的毕昇编译器优化-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20231212-7?envFlag=1
描述: 介绍常见的毕昇编译器优化选项及使用常见
关键词: 常见的毕昇编译器优化,官方技术文章,鲲鹏社区,Ofast,LTO,Link Time Optimization,Wl,PGO

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

常见的毕昇编译器优化

常见的毕昇编译器优化

故障案例

发表于 2023/12/12

0

毕昇的编译优化的种类繁多，支持的各类优化选项、参数常常成百上千，如有兴趣可以使用“-help-hidden“ 选项查看。此处推荐一些最常见的优化手段，这些优化选项应当在系统调优之前进行尝试，一般而言都有较好的性能收益。

以下正式进入选项推荐：

（1）调整通用优化等级 -O0/-O1/-O2/-O3/-Ofast：优化等级逐级增加，性能优化会越来约激进。 O0 所有优化、O1 开启基础优化、O2开启有有收益的全部激进优化、O3开启全部不损伤浮点计算精度的激进优化。Ofast开启全部激进优化，对浮点计算的结果造成影响。涉及浮点计算，且对准确性的要求可控时，可以打开-Ofast（或者-O3的基础上加-ffast-math）。

（2）-mcpu=tsv110：指定鲲鹏后端架构，使能对应架构的流水线优化，使能编译器定制的pipeline。

（3）LTO（Link Time Optimization）：-flto=full -fuse-ld=lld，链接时优化，开启-flto编译生成的.o是中间文件，并不是正常的.o。开启-flto需要保证编译及链接阶段都加上对应选项。编译加链接不加会报错。开启-flto后，-mllvm -xxxx形式的选项需要改为-Wl,-mllvm,-xxxx 传给链接器。

（4）使能多进程/多线程优化：应用中有openmp导语的情况下可以选择开启-fopenmp，此外可以尝试调整OMP_PROC_BIND=close/spread，可能会有性能收益；OMP_NUM_THREADS调整；绑核。

（5）PGO：反馈优化。

（6）增加选项-fprofile-generate=$PROFILE_DATA_PATH（$PROFILE_DATA_PATH为用于存放采样文件的路径）编译源码得到可执行文件。

（7）给可执行文件一组有代表性的输入，并运行可执行文件进行采样，采样后在$PROFILE_DATA_PATH路径下会得到采样文件。

（8）cd $PROFILE_DATA_PATH 使用下述命令处理采样文件，得到优化指导文件：$LLVM_DIR（毕昇编译器路径）/bin/llvm-profdata merge -output=bisheng.profdata ./*。

（9）增加选项-fprofile-use=$PROFILE_DATA_PATH/bisheng.profdata编译源码得到优化后的可执行文件。

（10）CSPGO：

在第3步后，增加一次采样：

添加选项-fprofile-use=$PROFILE_DATA_PATH/bisheng.profdata -fcs-profile-generate=$CS_PROFILE_DATA_PATH编译，并运行；

cd $CS_PROFILE_DATA_PATH 使用下述命令处理采样文件： $LLVM_DIR/bin/llvm-profdata merge -output=bisheng.profdata ./* =$PROFILE_DATA_PATH/bisheng.profdata；

增加选项-fprofile-use=$CS_PROFILE_DATA_PATH/bisheng.profdata编译源码得到优化后的可执行文件。
