在 Linux 下用 C++ 提升程序效率,通常可以从编译优化、系统调用、内存与并发、算法与架构几个层面入手。下面按“实用优先级”给你一个较系统的总结。
-O2 # 常用,性价比高
-O3 # 更激进(有时反而变慢)
-Os # 体积优先
-Ofast # 忽略严格标准(浮点慎用)
-march=native # 当前机器最优
-mtune=native
-flto # Link Time Optimization
-fno-rtti # 不需要 RTTI 时
-fno-exceptions # 不抛异常时(嵌入式常用)
clang / lldccacheninjareadv/writev)mmap 替代频繁 read/writeepoll(高并发网络)io_uring(Linux 5.1+,极致性能)select/pollO_DIRECT(数据库类)posix_fadvisesendfilestd::vector 预分配jemalloc / tcmallocstd::movestd::string_viewalignas)std::thread / pthreadsched_setaffinity)std::atomiclock-free queuestd::for_each(std::execution::par, ...);
perf top
perf record / perf report
valgrind --tool=callgrind
gprof
g++ -O2 -march=native -flto main.cpp -o app
先 profiling,再优化;优先算法与 I/O,其次内存与并发,最后才是微优化。
如果你有具体场景(网络服务 / 计算密集型 / 嵌入式 / 数据库),我可以给更针对性的建议。