在 Linux 下对 C++ 程序进行性能优化,通常可以从编译、算法、系统调用、内存、并发、工具分析几个层面入手。下面给出一个系统性的优化思路和常用手段。
不要过早优化,先用工具找到真正的瓶颈。
top / htopperf(强烈推荐)perf record ./your_program
perf report
gprofperf + 火焰图(FlameGraph)valgrind --tool=memcheckheaptrackiostatstrace -c ./program-O2 # 常用
-O3 # 激进,有时负优化
-Os # 体积优先
Release 版本一定要关调试:
-DNDEBUG
-march=native
(仅在本机运行时有用)
-flto
跨文件内联,效果明显。
clang 有时比 gcc 快thin LTO(clang)unordered_map 替代 map(哈希 vs 红黑树)const & / std::move)vector > listunordered_setnew/deletestd::vector::reservemalloc 慢 → 批量分配cout 慢 → 用 printf 或缓冲std::threadatomicshared_mutexstd::async#pragma omp parallel for
io_uring / libaio)printf/cout 频率taskset)nice)huge pages(大页内存)std::endl 会刷新缓冲区perf 找热点如果你有具体场景(如:网络服务 / 游戏 / 算法 / 数据库 / 高频交易),我可以给你更针对性的优化建议,甚至直接看代码。