Double vs float on the iPhone
我刚听说iphone不能在本机上做两倍的工作,因此比普通的浮动速度慢得多。
这是真的吗?证据?
我对这个问题很感兴趣,因为我的程序需要高精度的计算,我必须在速度上做出妥协。
iPhone可以在硬件上同时执行单精度和双精度运算。在1176(原始的iPhone和iPhone3g)上,它们的运行速度大致相同,但您可以在缓存中容纳更多的单精度数据。在Cortex-A8(iphone3gs、iphone4和ipad)上,单精度运算是在霓虹灯单元上完成的,而不是vfp,而且速度快得多。
如果要进行密集的浮点计算,请确保在ARMV6的编译设置中关闭Thumb模式。
这张幻灯片展示了为什么没有好的浮点和为什么有(向量浮点单位)。显然,检查影响是否启用浮点支持的"拇指模式"非常重要。这并不总是一个进步。它显示了如何在汇编代码中找到正确的指令。
它还取决于您想要运行代码的手机版本。最近的一个似乎"更有能力"做浮点数学。
编辑:这是一篇有趣的文章,介绍了带VFP和Neon SSE的ARM上的浮点优化。
ARM1176JZF-S手册说它支持双精度浮点数。你的身体应该很好。以下是PDF文档的链接。后来的iPhone是皮质芯片,当然它的功能也不应该减弱。