在 Ubuntu 上用 C++ 写程序“运行慢”,通常不是语言本身的问题,而是环境、编译方式或代码写法导致的。下面按常见原因系统说明一下:
很多初学者这样编译:
g++ main.cpp
./a.out
这是 默认 -O0(无优化),调试用,非常慢。
✅ 正确做法:
g++ -O2 main.cpp
# 或
g++ -O3 -march=native main.cpp
一般性能可提升 几倍到几十倍。
如果你用 CMake:
cmake .
make
默认是 Debug,等同于 -O0 -g。
✅ 正确方式:
cmake -DCMAKE_BUILD_TYPE=Release .
make
✅ 建议:
如果程序大量读写文件:
ifstream / ofstream
在机械硬盘或网络文件系统上会非常慢。
✅ 解决:
new / deletefor (...) {
int* p = new int[1000];
delete[] p;
}
✅ 改用:
std::vectorcoutfor (int i=0;i<1e7;i++)
cout << i << endl;
✅ 用:
cout << "\n";
// 或
printf
vector 频繁扩容vector<int> v;
for (...) v.push_back(x);
✅ 用:
v.reserve(n);
Ubuntu 多核,但你只用了 1 核。
✅ 用:
std::thread#pragma omp parallel for
nproc
如果看到很多核但程序只用一个,就是代码问题。
top
htop
sudo perf record ./a.out
sudo perf report
能看到哪一行函数最慢。
// 慢
g++ main.cpp
// 快
g++ -O2 -std=c++17 main.cpp
性能可能差 10 倍以上
你可以告诉我:
我可以直接帮你定位并给出优化方案。