在 CentOS 下对 C++ 程序进行性能优化,可以从 编译、系统、代码、工具 四个层面来做。下面给你一个比较系统、实战向的总结。
CentOS 默认可能是 gcc 4.8(较老),建议:
yum install centos-release-scl
yum install devtoolset-11
scl enable devtoolset-11 bash
使用 gcc 9 / 10 / 11 性能更好。
-O2 # 常用
-O3 # CPU 密集程序
-march=native
-flto # 链接期优化
-fno-omit-frame-pointer # 方便 perf 分析
示例:
g++ -O3 -march=native -flto main.cpp -o app
libstdc++(默认)jemalloc / tcmalloc(内存分配优化)yum install jemalloc
LD_PRELOAD=/usr/lib64/libjemalloc.so ./app
systemctl disable firewalld
systemctl stop firewalld
yum install cpupower-utils
cpupower frequency-set -g performance
对内存密集型程序有效:
echo 2048 > /proc/sys/vm/nr_hugepages
new/delete 频繁调用std::vector::reservealignas(64) int counter[64];
std::atomicstd::async / thread poolvoid f(const std::string& s); // ✅
void f(std::string s); // ❌
unordered_map vs mapperf record ./app
perf report
查看:
g++ -pg main.cpp
./app
gprof app gmon.out
valgrind --tool=callgrind ./app
kcachegrind callgrind.out
适合极致优化。
perf 找热点函数❌ 一上来就多线程
❌ 盲目 -O3
❌ 过度优化冷路径
❌ 忽略 I/O 瓶颈
如果你愿意,可以告诉我:
我可以给你更针对性的优化方案。