我正在分析我的代码并优化我可以做的一切,归结为一个看起来像这样的函数:
double func(double a, double b, double c, double d, int i){
if(i > 10 && a > b || i < 11 && a < b)
return abs(a-b)/c;
else
return d/c;
}
在程序运行期间它被调用了数百万次,分析器向我显示,大约 80% 的时间都花在了调用上abs()
。
我替换
abs()
为fabs()
它,它提高了大约 10% 的速度,这对我来说没有多大意义,因为我多次听说它们对于浮点数是相同的,abs()
应该始终使用。这是不真实的还是我错过了什么?评估可以进一步提高性能的双精度绝对值的最快方法是什么?
如果这很重要,我会g++
在 linux X86_64 上使用。