【问题标题】:Double vs float on the iPhoneiPhone上的双倍vs浮动
【发布时间】:2010-12-10 00:18:46
【问题描述】:

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

这是真的吗?证据?

我对此问题非常感兴趣,因为我的程序需要高精度计算,而我将不得不在速度上做出妥协。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我很想知道你从哪里得到的信息。
    • @Ben:也许他只是知道,但如果你查看我的帖子,链接提供的正是这些信息,而且 Google 会返回更多关于此主题的点击。
    • 架构参考手册(在这种情况下可从 ARM 免费获得)、反汇编程序 (otool) 和精心编写的时序循环足以获取有关几乎任何架构的信息。
    【解决方案2】:

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

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

    编辑:这是一个有趣的阅读 floating point optimizations 在带有 VFP 和 NEON SSE 的 ARM 上。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-09-08
        • 1970-01-01
        • 2013-05-20
        • 1970-01-01
        • 2010-12-22
        • 2010-09-24
        • 2011-12-08
        • 2014-02-28
        相关资源
        最近更新 更多