C++ 程序本身不一定慢,它通常是和硬件“贴得最近”、性能极高的语言之一。如果你感觉 C++ 写的程序在 Ubuntu 上运行慢,通常不是语言本身的问题,而是编译方式、系统环境或程序写法导致的。下面按最常见原因给你梳理一下。
这是 90% 新手会遇到的情况。
g++ main.cpp
./a.out
这样编译出来的是 未优化版本,和“裸跑”差不多。
g++ -O2 main.cpp
# 或
g++ -O3 -march=native main.cpp
-O2 / -O3 会:
如果你是 CMake 用户:
cmake .
make
默认是 Debug 模式,非常慢。
cmake -DCMAKE_BUILD_TYPE=Release .
make
或者:
cmake --build . --config Release
Ubuntu 大量使用 动态链接:
libstdc++libpthreadlibm程序启动时要做:
strip 减小体积Ubuntu 默认开启:
这些会:
g++ -O3 -no-pie -fno-stack-protector main.cpp
如果你在 Windows 的 Ubuntu(WSL1) 里跑:
✅ 解决:
C++ 程序常因:
cout 刷屏而显得“慢”。
for (int i = 0; i < 1e6; i++)
std::cout << i << std::endl;
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
Ubuntu 是 Linux,线程模型是 pthread:
std::thread 使用都会导致“多核反而更慢”。
你可能是这样比的:
| 情况 | 实际 |
|---|---|
| Python 慢 | 因为解释器 |
| C++ 慢 | 可能你没优化 |
| Java 快 | JIT 预热后快 |
| C++ 快 | 必须正确编译 |
你可以对照一下:
-O2 / -O3cout如果你愿意,可以:
我可以直接帮你定位“到底慢在哪”。