在 CentOS 上通过 GCC 优化程序性能,通常可以从编译选项、CPU 架构、链接方式、系统环境几个方面入手。下面按实用程度给你一个清晰清单。
-O2
推荐生产环境使用,兼顾性能与稳定性。
更激进(风险略高):
-O3
调试阶段不要开优化:
-O0 -g
-march=native
让 GCC 根据当前 CPU 自动选择最佳指令集(如 AVX2、SSE4.2 等)。
示例:
gcc -O2 -march=native main.c -o main
⚠️ 注意:
-march=native 编译的程序不能保证在别的 CPU 上运行
-O2 -march=native -mtune=native
或:
-O3 -march=native -funroll-loops
-flto
示例:
gcc -O2 -march=native -flto main.c util.c -o app
效果:
-O2 -march=native -flto -std=c++17
-ffast-math
⚠️ 会改变浮点行为,不适合金融、科学计算严格要求精度的场景
-static
glibc(默认)musl(轻量,但兼容略差)yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
查看版本:
gcc --version
cpupower frequency-set -g performance
或:
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
/sys/kernel/mm/transparent_hugepage/enabled
objdump -d app | less
perf top
perf stat ./app
gcc -O2 -march=native -mtune=native -flto main.c -o main
gcc -O3 -march=native -flto -funroll-loops -ffast-math main.c -o main
如果你愿意,可以告诉我:
我可以给你更精准的优化方案。