前言
stm32F407支持FPU,FPU开启前后计算浮点数速度差别有多大呢?本文将通过实际测试告诉你答案。
参与运算的部分
上图中的x *= y就是参与运算的2个浮点数,我们将count大小设置为100万次。
计算for循环耗时
首先注释掉for循环中的x *= y,计算for循环执行100万次耗时:
得出来的100万次for循环耗时为23.81ms。
计算开启FPU耗时
取消x *= y的注释,开启FPU,计算for循环执行100万次FPU浮点运算耗时:
包括for循环在内耗时为35715us,去掉for循环的23810us,耗时为11.905ms。
计算关闭FPU耗时
取消x *= y的注释,关闭FPU,计算for循环执行100万次FPU浮点运算耗时:
包括for循环在内耗时为547257us,去掉for循环的23810us,耗时为523.447ms。
总结
可以看到执行相同次数的浮点运算,开启FPU是关闭FPU的44倍(523.447/11.905≈44),如果用柱形图表示的话就是下面这个效果:
因此,如果MCU具有FPU功能,最好将其打开提高浮点运算速度。