在 CentOS 上优化 C++ 性能,可以从编译、系统、代码、运行环境几个层面来做。下面按实战优先级给你一个较完整的清单。
CentOS 自带 gcc 通常较老,建议升级:
# CentOS 7 示例
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
常用较新版本:
-O2 # 常用,安全
-O3 # 激进优化(可能增大体积)
-Ofast # 不严格遵循 IEEE(慎用)
-march=native
-mtune=native
示例:
g++ -O3 -march=native -flto main.cpp -o app
-flto
配合:
-O3 -flto
如果是 Clang:
clang++ -stdlib=libc++ main.cpp
-DNDEBUG
-fno-rtti
-fno-exceptions # 如果不用异常
setenforce 0
# 永久关闭
vi /etc/selinux/config
SELINUX=disabled
yum install cpupowerutils
cpupower frequency-set -g performance
查看:
lscpu
cat /proc/cpuinfo | grep MHz
# 关闭节能
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
# 示例
sysctl -w net.core.somaxconn=65535
sysctl -w vm.swappiness=10
std::vector::reservenew/delete| 场景 | 推荐 |
|---|---|
| 查找 | unordered_map |
| 顺序 | vector |
| 队列 | deque |
| 多线程 | 无锁结构 |
std::threadstd::async-fopenmp
alignas(64) int counter;
-mavx2 -mfma
或:
#include <immintrin.h>
-pg # gprof
-g # debug info
perf top
perf record ./app
perf report
yum install valgrind
valgrind --tool=callgrind ./app
perf script | stackcollapse-perf.pl | flamegraph.pl > out.svg
g++ -O3 -march=native -mtune=native -flto \
-DNDEBUG -fno-rtti -pthread \
main.cpp -o app
❌ 只靠 -O3
❌ 忽视 cache 命中率
❌ 多线程反而更慢(锁竞争)
❌ 使用 debug 模式跑性能测试
如果你愿意,可以告诉我:
我可以给你更针对性的优化方案。