在 Linux 下用 C++ 写程序时,“运行慢”通常不是单一原因,而是编译期或运行期某几个环节出了问题。下面按最常见原因 → 排查方法 → 解决建议给你一个系统清单。
g++ main.cpp -o main
默认是 -O0,代码没优化,运行会明显慢。
✅ 解决:
g++ -O2 main.cpp -o main
# 或
g++ -O3 -march=native main.cpp -o main
#include <bits/stdc++.h>.cpp 都重新编译头文件✅ 解决:
#include-j 并行编译:make -j$(nproc)
.o 文件✅ 解决:
gold 或 lld 链接器-fuse-ld=lld
CMake 默认可能是 Debug:
set(CMAKE_BUILD_TYPE Debug)
✅ 解决:
cmake -DCMAKE_BUILD_TYPE=Release ..
比如:
cin >> x;
cout << x;
在 Linux 下比 C 的 scanf/printf 慢很多。
✅ 解决:
ios::sync_with_stdio(false);
cin.tie(nullptr);
或改用:
printf / scanf
cout << endl(会 flush)open/close 文件new/delete✅ 解决:
'\n' 而不是 endlstd::map(红黑树) → 用 unordered_mapvector 而不是 list✅ 工具:
perf top
perf record ./main
perf report
Linux 默认可能节能:
cat /proc/cpuinfo | grep MHz
✅ 解决:
sudo cpupower frequency-set -g performance
✅ 解决:
/mnt/c# 1. 是否 Release?
echo $CMAKE_BUILD_TYPE
# 2. 是否开优化?
g++ -O2
# 3. I/O 是否优化?
ios::sync_with_stdio(false);
# 4. 是否 CPU 降频?
cpupower frequency-info
# 5. 哪里慢?
perf top
你可以补充:
perf 或 time 输出?我可以直接帮你定位到具体哪一行慢。