在 Linux 下用 C++ 程序“运行缓慢”通常不是语言本身的问题,而是环境、编译方式、系统调用、资源瓶颈或代码实现导致的。下面按常见原因系统讲一下,并给出排查思路。
-O2 / -O3g++ -O2 -o app app.cpp
# 或
g++ -O3 -march=native -o app app.cpp
✅ 很多“C++ 很慢”的案例,只是没开优化。
-D_GLIBCXX_DEBUGvector / map 极慢cout 没同步open/closesleep / usleep 滥用read/writefor (int i = 0; i < 100000; i++)
std::cout << i << "\n";
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
或改用:
printfmmapnew/deletevalgrind --tool=massif ./app
std::vector 预分配jemalloc / tcmalloctop 看到大量 D 或 Sperf top
mutexatomiciostat -x 1
nproc
cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us
map 当 unordered_map 用perf record ./app
perf report
std::random_device rd; // 可能走 /dev/random
✅ 改用 mt19937
std::chrono::system_clock::now(); // 系统调用
# 1. 看 CPU
top / htop
# 2. 看系统调用
strace -c ./app
# 3. 看热点
perf top
# 4. 看内存
valgrind --tool=massif
Linux 下 C++ 慢,90% 不是 C++ 慢,而是:没优化、系统调用多、锁多、I/O 慢、或资源被限制。
如果你愿意,可以:
我可以直接帮你定位。