小编Eik*_*ike的帖子

-march=native 有害的原因是什么

我正在编写一个 C++ 程序,用于求解网络上的偏微分方程和代数方程。Eigen 库承担了大部分工作,通过 LU 分解求解许多稀疏线性系统。

由于性能总是很好,因此我尝试了多种选择。我在用着

g++ -O3 -DNDEBUG -flto -fno-fat-lto-objects -std=c++17
Run Code Online (Sandbox Code Playgroud)

作为与性能相关的编译器选项。然后我添加了-march=native选项,发现执行时间平均增加了大约 6%(通过 gnu time 进行测试,每个配置的样本大小约为 10 次运行。两种设置几乎没有差异)。

这种观察的可能(或最好可能)原因是什么?

我想 lscpu 的输出在这里可能有用,所以就是这样:

Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              2
Core(s) per socket:              2
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           78
Model name:                      Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz
Stepping: …
Run Code Online (Sandbox Code Playgroud)

c++ performance gcc eigen

2
推荐指数
1
解决办法
905
查看次数

标签 统计

c++ ×1

eigen ×1

gcc ×1

performance ×1