47

我刚刚听说 iphone 不能在本机上做 double,从而使它们比常规浮动慢得多。

这是真的?证据?

我对这个问题很感兴趣,因为我的程序需要高精度计算,而且我必须在速度上做出妥协。

4

3 回答 3

71

iPhone 可以在硬件上进行单精度和双精度运算。在 1176(原始 iPhone 和 iPhone3G)上,它们以大致相同的速度运行,但您可以在缓存中容纳更多单精度数据。在 Cortex-A8(iPhone3GS、iPhone4 和 iPad)上,单精度运算是在 NEON 单元而不是 VFP 上完成的,并且速度要快得多。

如果您正在进行密集的浮点计算,请确保在您的 armv6 编译设置中关闭拇指模式。

于 2009-10-26T02:03:18.583 回答
12

这张幻灯片展示了为什么没有好的浮点以及为什么有(向量浮点单元)。显然,检查影响浮点支持是否开启的“拇指模式”很重要。这并不总是一种改进。它展示了如何在汇编代码中找到正确的指令。

它还取决于您要运行代码的手机版本。最近的一个似乎“更有能力”进行浮点数学运算。

编辑:这里有一篇关于 ARM VFP 和 NEON SSE浮点优化的有趣读物。

于 2009-10-26T02:04:25.097 回答
10

ARM1176JZF-S 手册说它支持双精度浮点数。你的身体应该很好。这是PDF 文档的链接。后来的 iPhone 是 Cortex 芯片,当然不应该有更少的能力。

于 2009-10-26T01:43:45.627 回答