在 Ubuntu 上使用 GCC 时感觉“运行速度慢”,通常并不是 GCC 本身执行程序慢,而是编译慢或生成的可执行文件运行慢。下面分情况说明常见原因和解决办法。
-O0 编译快,但生成的代码运行慢✅ 建议:
gcc -O2 main.c
GCC 默认只用 1 个 CPU 核心。
✅ 使用多核:
make -j$(nproc)
或
gcc -c a.c & gcc -c b.c &
-g)-g 会生成大量调试符号,显著拖慢编译。
✅ 开发时:
gcc -g -O0
✅ 发布时:
gcc -O2
-fsanitize=address
会让程序运行慢 2–10 倍,编译也慢。
✅ 仅调试用,发布必须关掉
#include <bits/stdc++.h>✅ 使用预编译头(PCH) ✅ 减少不必要头文件
Ubuntu 默认:
gcc main.c
# 等价于 -O0
✅ 正确做法:
gcc -O2 main.c
或
gcc -O3 -march=native main.c
例如:
gdb ./a.out
或
gcc -g -O0
✅ 发布程序不要带 -g
Ubuntu 默认可能是省电模式。
查看:
powerprofilesctl get
切换:
powerprofilesctl set performance
WSL 下:
✅ 建议:
~/)/mnt/cUbuntu LTS 自带的 GCC 可能较旧(如 GCC 9/11)
查看:
gcc --version
升级:
sudo apt install gcc-13
| 检查项 | 命令 |
|---|---|
| 是否开优化 | gcc -O2 |
| 是否多核 | make -j |
| 是否 debug | 去掉 -g |
| CPU 模式 | powerprofilesctl |
| 是否在 WSL | uname -a |
我可以更精准帮你定位:
直接贴一段编译命令也可以。