eth*_*ngk 1 c math floating-point optimization performance
我的C代码中有以下等式
k * dl * (1.0 + pHold / centre
+ (pHold * pHold) / (2.0 * centre * centre)
- square / (2.0 * centre))
Run Code Online (Sandbox Code Playgroud)
我知道浮点除法比乘法要贵得多,而且我已经和它搏斗了一段时间.有没有办法重新排列这个来划分一个师?
谢谢
请注意,在您实际尝试优化某些部分之前,您应该:
但是如果你确定方程本身应该被优化,你可以使用乘法逆的centre
出现在你的等式中4次,将除法计数减少到1:
double centreInv = 1.0 / centre;
double pHoldToCentre = pHold * centreInv;
double result =
k * dl * (1.0 + pHoldToCentre
+ 0.5 * pHoldToCentre * pHoldToCentre
- 0.5 * square * centreInv);
Run Code Online (Sandbox Code Playgroud)
另请注意,这些更改实际上可能会影响此等式的结果,因此如果您决定更改它,请确保它仍然产生所需的输出.