在 Linux 下进行 C++ 性能优化通常可以从 编译配置、系统调优、代码结构、工具分析 四个层面入手。下面给你一套比较系统、可落地的优化思路。
-O2 # 常用、稳定
-O3 # 更激进(可能增大体积,有时反而慢)
-Ofast # 忽略标准严格性(慎用)
建议:
-O2 -DNDEBUG-O3 -march=native-march=native
-mtune=native
⚠ 注意:生成的二进制不能跨机器部署
-flto # Link Time Optimization
-fuse-ld=lld # 更快的链接器(clang)
#define _GNU_SOURCE
#include <sched.h>
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(2, &mask);
sched_setaffinity(0, sizeof(mask), &mask);
std::thread / pthreadchrt -r 99 ./app
echo never > /sys/kernel/mm/transparent_hugepage/enabled
new/deletevoid f(const std::string& s); // ✅
void f(std::string s); // ❌
std::moveemplace_back| 场景 | 建议 |
|---|---|
| 随机访问 | vector |
| 频繁插入删除 | list / deque |
| 查找 | unordered_map |
| 小数据 | array |
alignas(64) int counter;
std::atomicperf top
perf record -g ./app
perf report
valgrind --tool=memcheck
heaptrack
perf script | FlameGraph/stackcollapse-perf.pl | FlameGraph/flamegraph.pl > out.svg
clang-tidy
cppcheck
❌ 在热点路径使用:
std::cout✅ 热点代码:
g++ -O2 -DNDEBUG -march=native -flto \
-pthread main.cpp -o app
如果你愿意,可以告诉我:
我可以直接给你针对性优化方案或代码级改造示例。