【发布时间】:2017-01-18 15:16:34
【问题描述】:
来自 libm*.so 的 __ieee754_exp_avx 在某个源代码中被大量使用,我想用更快的 exp(x) 实现替换它吗?
自定义 exp(x):
inline
double exp2(double x) {
x = 1.0 + x / 1024;
x *= x; x *= x; x *= x; x *= x;
x *= x; x *= x; x *= x; x *= x;
x *= x; x *= x;
return x;
}
我应该使用哪些 gcc 标签来使 gcc 自动使用自定义的 exp(x) 实现?如果 gcc 不可能,那我该怎么做呢?
https://codingforspeed.com/using-faster-exponential-approximation/
【问题讨论】:
-
最好的办法是分析代码,然后手动放入 exp2 调用。 (pow() 也会调用 exp())。通常代码会因为失去准确性而崩溃,你需要小心地做这种事情。
标签: c++ c performance gcc optimization