iPhone上的Double vs float

Joh*_*ith 47 iphone floating-point cocoa-touch ieee-754

我刚刚听说iphone不能原生地加倍,从而使它们比常规漂浮慢得多.

这是真的?证据?

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

Ste*_*non 71

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

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

  • 架构参考手册(在这种情况下可从ARM免费获得),反汇编器(otool)和精心编写的时序循环足以获得有关几乎任何架构的信息. (24认同)

Abe*_*bel 12

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

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

编辑:这是关于ARM上使用VFP和NEON SSE 进行浮点优化的有趣读物.


Car*_*rum 10

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