在 Ubuntu 上 C++ 程序运行慢,通常不是单一原因,而是编译方式、系统环境、代码本身或运行时因素共同导致的。下面按最常见 → 较少见的顺序给你系统排查清单,并给出对应解决方法。
g++ main.cpp
默认是 -O0(无优化),调试级别,性能极差。
g++ -O2 -o main main.cpp
或(推荐发布用):
g++ -O3 -march=native -o main main.cpp
✅ -O2 / -O3:开启优化
✅ -march=native:使用当前 CPU 特性(AVX 等)
cmake 但没切到 Releasecmake -DCMAKE_BUILD_TYPE=Release ..
或:
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
lscpu
查看:
CPU MHz
如果明显低于 CPU 标称频率,可能是:
✅ 解决:
如:
✅ 建议:
free -h
htop
如果频繁使用 swap,程序会慢很多。
✅ 解决:
sudo swapoff -a
❌ 慢写法:
vector<int> v;
for (int i = 0; i < 1000000; i++)
v.push_back(i);
✅ 快写法:
vector<int> v;
v.reserve(1000000);
new / delete 或 malloc每次 new 都会系统调用。
✅ 解决:
std::vector 代替动态数组ios::sync_with_stdio(false);
cin.tie(nullptr);
✅ 放在 main() 开头
例如:
-d 或 debug 版 Boost✅ 检查并切换为 release 库
例如:
map → unordered_maplist → vectorperfsudo apt install linux-tools-common linux-tools-generic
perf stat ./main
可以看到:
timetime ./main
| 情况 | 说明 |
|---|---|
-O0 |
很慢 |
-O2 |
正常 |
| Debug 模式 | 慢 |
| Release 模式 | 快 |
| 虚拟机 | 慢 |
| 物理机 | 快 |
| WSL1 | 慢 |
| WSL2 | 接近原生 |
你可以直接贴出:
我可以 直接告诉你慢在哪、怎么改,甚至帮你跑性能对比。