在 Linux 下进行 C++ 配置与优化,通常可以从 编译选项、构建系统、运行环境、代码层面、工具链 几个维度来做。下面按优先级和实践经验给你一个较完整的优化指南。
g++ -v
clang++ -v
-O2 # 常用,性价比最高
-O3 # 更高性能,可能增加体积
-Ofast # 不严格遵循标准(浮点)
示例:
g++ -O2 -march=native -flto main.cpp
-march=native # 使用本机 CPU 指令集
-mtune=native
-flto
需同时用于编译和链接。
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native -flto")
make -j$(nproc)
减少内存分配开销:
-L/usr/lib -ltcmalloc
void f(const std::string& s);
auto& x = vec[0];
std::vector<int> g() {
std::vector<int> v;
return v; // 自动 move
}
std::arrayfinal-Wall -Wextra
perfperf top
perf record ./app
valgrindvalgrind --tool=callgrind ./app
gprof(简单)-s
ulimit -n 100000
echo 1024 > /proc/sys/vm/nr_hugepages
g++ -O3 -march=native -flto -DNDEBUG \
-Wall -Wextra main.cpp -o app -ltcmalloc
你可以告诉我:
我可以直接给你一套 可复制的配置模板。