【发布时间】:2017-05-03 02:22:33
【问题描述】:
在本征中,与
ArrayXXf a;
a = ArrayXXf::Random(1000, 10000);
在做
a = a.pow(4);
在我的电脑上大约需要 500 毫秒,而在做
a = a.square().square();
只需要大约 5 毫秒。我正在使用最近发布的 GCC 进行编译。
这是预期的行为还是我做错了什么?我希望,至少对于小整数(比如
【问题讨论】:
-
您可以自己构建一个自定义二进制函子,它调用
__builtin_powi(在 gcc/clang 上) -
@chtz 虽然乍一看很好,但正如你所说的那样不便携。特别是如果想使用英特尔编译器。
标签: c++ optimization compiler-optimization eigen pow