在 Ubuntu 上跑 C++ 程序“慢”,原因可能很多,不一定是系统问题,也可能是代码、编译方式或环境配置的问题。下面按最常见原因给你梳理一下,并给出排查思路。
如果你是这样编译的:
g++ main.cpp
默认是 -O0(无优化),程序会非常慢。
✅ 正确做法:
g++ -O2 main.cpp -o app
# 或
g++ -O3 -march=native main.cpp -o app
可以对比一下速度差异,通常能快几倍。
如果你用 CMake:
cmake .
make
默认是 Debug。
✅ 正确做法:
cmake -DCMAKE_BUILD_TYPE=Release ..
make
Ubuntu 下:
✅ 可重试几次看是否稳定
可暂时排除:
sudo aa-status
Ubuntu 默认可能使用 powersave 模式。
查看:
cat /proc/cpuinfo | grep MHz
解决:
sudo apt install cpufrequtils
sudo cpufreq-set -g performance
或:
powerprofilesctl set performance
cout / printfIO 是非常慢的。
❌ 示例:
for (int i = 0; i < 1e7; i++)
cout << i << endl;
✅ 改进:
ios::sync_with_stdio(false);
cin.tie(nullptr);
动态内存分配在 Linux 下可能比你想的慢。
✅ 建议:
vectornewUbuntu 对多线程支持很好,但如果:
-pthreadstd::thread程序可能只跑单核。
g++ -O2 -pthread main.cpp
如果是:
可能瓶颈在 磁盘 IO,不是 C++。
查看:
iostat -x 1
如果你是在:
那:
/mnt/c 会非常慢✅ 建议:
你可以对照一下:
-O2 / -O3如果你愿意,可以把:
发给我,我可以直接帮你定位“慢在哪”。