温馨提示×

ubuntu gcc为何运行速度慢

小樊
34
2026-09-16 05:34:49
栏目: 智能运维

在 Ubuntu 上使用 GCC 时感觉“运行速度慢”,通常并不是 GCC 本身执行程序慢,而是编译慢生成的可执行文件运行慢。下面分情况说明常见原因和解决办法。


一、你指的是「编译速度慢」

1. 没开优化反而更慢(少见)

  • 默认 -O0 编译快,但生成的代码运行慢
  • 如果你误以为“编译慢 = 运行慢”,其实不是一回事

✅ 建议:

gcc -O2 main.c

2. 没使用多核编译

GCC 默认只用 1 个 CPU 核心。

✅ 使用多核:

make -j$(nproc)

gcc -c a.c & gcc -c b.c &

3 开启了调试信息(-g

-g 会生成大量调试符号,显著拖慢编译。

✅ 开发时:

gcc -g -O0

✅ 发布时:

gcc -O2

4 使用了 Sanitizer(非常慢)

-fsanitize=address

会让程序运行慢 2–10 倍,编译也慢。

✅ 仅调试用,发布必须关掉


5 头文件过多 / 模板膨胀(C++ 更明显)

  • #include <bits/stdc++.h>
  • 大量 STL 模板

✅ 使用预编译头(PCH) ✅ 减少不必要头文件


二、你指的是「程序运行速度慢」

1 没开编译器优化(最常见)

Ubuntu 默认:

gcc main.c
# 等价于 -O0

✅ 正确做法:

gcc -O2 main.c

gcc -O3 -march=native main.c

2 用了 Debug 模式运行

例如:

gdb ./a.out

gcc -g -O0

✅ 发布程序不要带 -g


3 系统不是性能模式

Ubuntu 默认可能是省电模式

查看:

powerprofilesctl get

切换:

powerprofilesctl set performance

4 使用了 WSL(Windows Subsystem for Linux)

WSL 下:

  • 文件系统慢
  • 进程调度慢
  • I/O 明显慢

✅ 建议:

  • 文件放在 WSL 内部(~/
  • 不要用 /mnt/c

5 使用了老旧 GCC 版本

Ubuntu LTS 自带的 GCC 可能较旧(如 GCC 9/11)

查看:

gcc --version

升级:

sudo apt install gcc-13

三、快速自查清单 ✅

检查项 命令
是否开优化 gcc -O2
是否多核 make -j
是否 debug 去掉 -g
CPU 模式 powerprofilesctl
是否在 WSL uname -a

四、如果你能补充一点信息

我可以更精准帮你定位:

  1. 编译慢 还是 运行慢
  2. 用的 C 还是 C++
  3. 程序规模(几行 / 几万行)?
  4. 是否在 WSL / 虚拟机 / 真机

直接贴一段编译命令也可以。

0