在 Linux 下用 C++ 提升性能,通常可以从编译选项、系统配置、代码层面、工具分析四个方向入手。下面按实用程度系统整理一份「Linux C++ 性能优化清单」。
-O2 # 常用,性价比高
-O3 # 更高优化(个别程序可能变慢)
-Ofast # 忽略严格标准(浮点可能不准)
建议:
-O2 或 -O3-Ofast-march=native # 使用当前机器 CPU 指令集
-mtune=native
⚠️ 编译后不能跨机器保证兼容
-flto
跨文件内联、删除死代码,效果明显
gcc / clang(clang 有时更快)-stdlib=libc++
-s # 去掉符号表
-fvisibility=hidden
#include <sched.h>
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(2, &mask);
sched_setaffinity(0, sizeof(mask), &mask);
sudo cpupower frequency-set -g performance
ulimit -n 100000
网络:
TCP_NODELAYepoll / io_uring适合内存密集型程序(数据库、缓存)
std::vector::reservenew/delete 频繁调用std::unordered_map → 通常慢于 std::vectorarray / flat_mapstd::function(可用模板)void f(const std::string& s); // 引用
auto&& x = get(); // 转发引用
std::thread + std::atomicperf top
perf record ./app
perf report
valgrind --tool=memcheck
heaptrack
perf script | flamegraph.pl > out.svg
-Wall -Wextra
-fopt-info
g++ -O3 -march=native -flto -pthread main.cpp -o app
❌ 盲目用 -O3
❌ 过早优化
❌ 忽略 profiling
❌ 用多线程解决单线程瓶颈
如果你愿意,可以告诉我:
我可以直接给你针对性优化方案或示例代码。