如何设置C/C++编译器选项以对正在使用的CPU进行最佳优化?
要为特定 CPU 构建具有最佳优化的二进制文件,如何设置 C/C++ 编译器选项?例如,当功能可用时,尝试利用 MMX/3DNow!/SSE/SSE2/SSE3 等 CPU 功能。
回答
GCC 和 Clang 支持-march=native从编译器正在执行的处理器类型中选择要为其生成代码的 CPU,并-mtune=native为其优化代码。请注意,这些开关在特定体系结构部分中列出,例如 X86 或 ARM 体系结构,因此它们可能不适用于编译器支持的所有体系结构。
-march=native如果要生成不需要在其他处理器模型上执行的代码,请使用。-march=native暗示mtune=native.
如果要生成针对当前处理器调整的代码,但仍然可以在处理器模型上执行,则使用-mtune=nativewithout -march=native。