“Ubuntu 下 C++ 慢如牛”通常不是 C++ 本身的问题,而是编译、运行环境、配置或代码方式导致的。下面按常见原因给你系统梳理一下,并给出对应解决办法。
gdb 或默认 cmake 的 Debug 模式默认编译是:
g++ main.cpp
等价于:
g++ -O0 -g main.cpp
-O0:完全不优化g++ -O2 main.cpp
# 或
g++ -O3 -march=native main.cpp
CMake:
set(CMAKE_BUILD_TYPE Release)
apt install g++sudo apt install g++-12
g++-12 -O3 -march=native main.cpp
或使用 Clang:
sudo apt install clang
clang++ -O3 main.cpp
vector<int> v;
for (int i = 0; i < 1e7; i++)
v.push_back(i);
vector<int> v;
v.reserve(1e7);
或:
vector<int> v(1e7);
cin >> x;
cout << x;
ios::sync_with_stdio(false);
cin.tie(nullptr);
或直接用:
scanf / printf
for (int i = 0; i < n; i++) // 单线程
compute(i);
#pragma omp parallel for
for (int i = 0; i < n; i++)
compute(i);
编译:
g++ -O3 -fopenmp main.cpp
nproc
lscpu
sudo apt install cpufrequtils
cpufreq-set -g performance
比如:
new/delete你可以用这个判断:
-O2 / -O3你可以直接把:
发出来,我可以精确告诉你慢在哪一步。