iPhone上的Double vs float

时间:2009-10-26 01:33:00

标签: iphone cocoa-touch floating-point ieee-754

我刚刚听说iphone本身不能做双重操作,因此比普通浮动慢得多。

这是真的吗?证据?

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

3 个答案:

答案 0 :(得分:71)

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

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

答案 1 :(得分:12)

This slide show可以深入了解为什么没有好的浮点以及为什么存在(向量浮点单元)。显然,检查影响浮点支持是否打开的“拇指模式”非常重要。这并不总是一种改进。它显示了如何在汇编代码中找到正确的指令。

它还取决于您要运行代码的what version of the phone。最近的一个似乎“更有能力”进行浮点数学运算。

编辑:这是关于ARM上使用VFP和NEON SSE的floating point optimizations的有趣读物。

答案 2 :(得分:10)

ARM1176JZF-S手册说它支持双精度浮点数。你应该保持良好状态。这是PDF文档的link。后来的iPhone是Cortex芯片,当然不应该少用。