有没有办法自动为正在使用的 CPU 选择最佳的 C/C++ 编译器选项?

问题描述

为了获得最佳性能,有没有办法根据所使用的 cpu 的特性(例如利用 MMX、3DNow!、SSE)自动选择最佳的 C/C++ 编译器(例如 msvc、gcc、clang)选项、SSE2、SSE3 等)?

解决方法

GCC 和 Clang 支持 -march=native 从编译器正在执行的处理器类型中选择要为其生成代码的 CPU,并支持 -mtune=native 为其优化代码。请注意,这些开关列在特定的架构部分,例如 X86 或 ARM 架构,因此它们可能不适用于编译器支持的所有架构。

如果您想生成不需要在其他处理器模型上执行的代码,请使用 -march=native-march=native 意味着 mtune=native

如果您想生成针对当前处理器调整的代码,但仍然可以在处理器模型上执行,则使用不带 -mtune=native-march=native