在 Ubuntu 上使用 C++ 程序出现严重卡顿,通常不是“C++ 本身慢”,而是环境或代码层面的问题。下面按常见原因 → 排查方法 → 解决建议给你梳理一下。
cout / printf这是新手最常见卡顿原因。
for (int i = 0; i < 1000000; i++)
cout << i << endl;
问题:
endl 会强制刷新缓冲区✅ 解决:
cout << i << '\n';
或
ios::sync_with_stdio(false);
cin.tie(nullptr);
表现:
✅ 建议:
while(true){
// 没 sleep
}
或:
while(!flag); // 忙等
✅ 解决:
sleep / usleepstd::condition_variablewhile(true){
int* p = new int[1000000];
}
表现:
✅ 检查:
top
htop
free -h
mutex m;
void f(){
lock_guard<mutex> l(m);
// 大量计算
}
✅ 表现:
✅ 解决:
你可能在用:
g++ main.cpp
✅ 正确方式:
g++ -O2 main.cpp
调试时:
g++ -O0 -g main.cpp
✅ 检查:
glxinfo | grep OpenGL
你可以按顺序检查:
htop # 看 CPU / 内存
free -h # 看是否 swap
nvidia-smi # 显卡情况
strace ./a.out
你可以贴出:
我可以精确告诉你卡在哪里、怎么改。