在 Linux 下进行 C++ 配置与优化,一般可以从 编译配置、构建系统、运行环境、代码层面、性能工具 几个维度来做。下面按“实用优先”的方式给你一个较完整的优化清单。
g++ --version
clang++ --version
-O2 # 常用、稳定
-O3 # 更高性能(可能增大体积)
-Os # 追求体积
-Ofast # 忽略严格标准(谨慎)
示例:
g++ -O2 -std=c++17 main.cpp -o app
让编译器针对你的 CPU:
-march=native
-mtune=native
示例:
g++ -O2 -march=native main.cpp -o app
⚠️ 注意:这样编译的程序不能跨机器移植。
显著提升性能:
-flto
示例:
g++ -O2 -flto main.cpp -o app
Clang + libc++:
clang++ -std=c++17 -stdlib=libc++ main.cpp
推荐:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -march=native -flto")
并行编译:
make -j$(nproc)
sudo apt install ccache
export CC="ccache gcc"
export CXX="ccache g++"
ulimit -n 100000
ulimit -u 100000
sudo cpupower frequency-set -g performance
const &std::moveemplace_backvec.emplace_back(1, 2, 3);
| 场景 | 推荐 |
|---|---|
| 随机访问 | vector |
| 频繁插入删除 | list / deque |
| 查找 | unordered_map |
virtualCRTP 或模板std::pmr-Wall -Wextra -Wpedantic
perf record ./app
perf report
valgrind --tool=memcheck ./app
-fsanitize=address
-fsanitize=undefined
g++ -std=c++17 -O2 -march=native -flto \
-Wall -Wextra main.cpp -o app
你可以告诉我:
我可以直接给你 可落地的配置模板。