【发布时间】:2010-12-10 00:18:46
【问题描述】:
我刚刚听说 iphone 不能在本机上做 double,从而使它们比常规浮动慢得多。
这是真的吗?证据?
我对此问题非常感兴趣,因为我的程序需要高精度计算,而我将不得不在速度上做出妥协。
【问题讨论】:
标签: iphone cocoa-touch floating-point ieee-754
我刚刚听说 iphone 不能在本机上做 double,从而使它们比常规浮动慢得多。
这是真的吗?证据?
我对此问题非常感兴趣,因为我的程序需要高精度计算,而我将不得不在速度上做出妥协。
【问题讨论】:
标签: iphone cocoa-touch floating-point ieee-754
iPhone 可以在硬件中进行单精度和双精度运算。在 1176(原始 iPhone 和 iPhone3G)上,它们以大致相同的速度运行,但您可以在缓存中容纳更多单精度数据。在 Cortex-A8(iPhone3GS、iPhone4 和 iPad)上,单精度运算是在 NEON 单元而不是 VFP 上完成的,并且速度要快得多。
如果您正在进行密集的浮点计算,请确保在您的 armv6 编译设置中关闭拇指模式。
【讨论】:
This slide show 解释了为什么没有好的浮点以及为什么有(向量浮点单元)。显然,检查影响浮点支持是否开启的“拇指模式”很重要。这并不总是一种改进。它展示了如何在汇编代码中找到正确的指令。
这还取决于您要运行代码的what version of the phone。最近的一个似乎“更有能力”进行浮点数学运算。
编辑:这是一个有趣的阅读 floating point optimizations 在带有 VFP 和 NEON SSE 的 ARM 上。
【讨论】:
ARM1176JZF-S 手册说它支持双精度浮点数。你的身体应该很好。这是 PDF 文档的link。后来的 iPhone 是 Cortex 芯片,功能当然不应该降低。
【讨论】: