是否有人在基于ATMega(2560)的系统上更换浮点运算?每天都会发生一些非常常见的情况。
例如:
比分/乘法的比较快吗?
对于没有类型转换的纯浮点运算,float到int类型转换是否跟随乘法/除法更快?
我希望我不必为我制作基准。
示例一:
int iPartialRes = (int)fArg1 * (int)fArg2;
iPartialRes *= iFoo;
更快?:
float fPartialRes = fArg1 * fArg2;
fPartialRes *= iFoo;
示例二:
iSign = fVal < 0 ? -1 : 1;
更快?:
iSign = fVal / fabs(fVal);
答案 0 :(得分:1)
问题可以通过思考片刻来解决。
AVR没有FPU,所以所有浮点相关的东西都是用软件完成的 - &gt; fp乘法涉及的不仅仅是简单的int乘法
由于AVR也没有整数除法单元,因此简单分支也比软件除法快得多。如果划分浮点数,这是最糟糕的最坏情况:)
但请注意,您的前两个示例会产生截然不同的结果。