浮点运算和整数运算的速度相同吗?如果不是,整数版本有多快?
这取决于您使用的模型,但倾向于整数具有更多使用128位宽数据路径的机会。但在新的CPU上已经不再是这样了。
当然,整数算术还可以通过使用16位或8位操作来增加并行性。
与所有整数与浮点数之间的争论一样,这取决于具体问题以及您愿意投入多少时间进行调优,因为它们很少能完全运行相同的代码。
因此,在这种情况下,你肯定不会选择整数而不是浮点数。
如果你正在处理16位数据,则权衡要更接近,尽管你可能仍需要额外的指令将乘法的结果移回所需的精度。如果你使用Q15并希望实现良好的性能,则可以在s16数据上使用VQDMULH指令,并且使用较少的寄存器就可以实现更高的性能,而不是使用SP float。
另外,正如auselen所提到的,新型芯片有不同的微架构,事情总是在变化中。我们很幸运,ARM实际上公开了他们的信息。对于像苹果、高通和三星(可能还有其他厂商...)这样修改微体系结构的厂商来说,唯一的办法就是去尝试,如果你在写汇编代码,这可能是很多工作。不过,我认为官方的ARM指令计时网站可能非常有用。我确实认为他们发布了A9的数字,而且这些数字基本相同。