我正在尝试弄清楚如何-march
正确设置选项,以查看在我的带有 gcc 4.7.2 的 PC 上启用和禁用选项之间的性能差异有多大。
在尝试编译之前,我试图找到最-march
适合我的 PC 的选项。我的 PC 有 Pentium G850,其架构是 Sandy Bridge。所以我参考了 gcc 4.7.2 手册,发现这-march=corei7-avx
似乎是最好的。
但是,我记得基于 Sandy Bridge 的 Pentium 缺乏 AVX 和 AES-NI 指令集支持,Pentium G850 也是如此。所以-march=corei7-avx
不是一个合适的选择。
我提出了一些潜在的选择:
-march=corei7-avx -mno-avx -mno-aes
-march=corei7 -mtune=corei7-avx
-march=native
考虑到我拥有的信息,第一个选项看起来很合理,但我担心可能缺少 AVX 和 AES-NI 以外的功能。第二个选项看起来很安全,但它可能会因为-march=corei7
. 第三个选项将解决我所有的顾虑,但我听说这个选项有时会误检测 CPU 的功能,所以我想知道如何手动执行此操作。
我用谷歌搜索并搜索了 StackOverflow 和 SuperUser,但我找不到任何明确的解决方案......
应该设置哪些选项?