优化 Linux 下 C++ 程序性能,通常可以从系统层、编译层、代码层、工具层四个维度来做。下面给你一个比较系统的清单,适合实际工程使用。
不要盲优化,先用工具确认热点。
top / htopperf(perf top, perf record, perf report)valgrind --tool=massifheaptrackiostatstrace -cperf lockhelgrind✅ 原则:先测再改,改完再测
-O2 # 常用
-O3 # CPU 密集
-Ofast # 极端(不保证严格标准)
-march=native
让编译器使用当前 CPU 的特性(AVX 等)
-flto # Link Time Optimization
-Wl,-O2
-DNDEBUG
new/deletestd::vector::reservestd::vector<int> v;
v.reserve(10000);
std::movestd::vector<int> func() {
std::vector<int> v;
return v; // 不要加 std::move
}
❌ 链表 + 随机访问
✅ 数组 + 顺序访问
std::atomicstd::atomic<int> counter;
counter.fetch_add(1, std::memory_order_relaxed);
fwrite, std::ostream)io_uring, libaio)#include <sched.h>
cpu_set_t mask;
CPU_ZERO(&mask);
CPU_SET(0, &mask);
sched_setaffinity(0, sizeof(mask), &mask);
sysctl vm.swappiness=10
适合内存密集型服务(数据库、缓存)
❌ 频繁 std::endl(刷新缓冲)
❌ 过度使用 shared_ptr
❌ 滥用虚函数
❌ 大量小对象分配
❌ 锁竞争严重
perf top 找到热点函数-O2 -march=native -flto如果你愿意,可以:
我可以直接帮你做针对性优化建议。