如果有很多浮点运算正在进行,Apple 建议针对 ARM 进行编译,而不是针对拇指进行编译。我的整个应用程序几乎是一个大型浮点运算。
iOS 应用程序开发工作流程指南中是这样说的:
iOS 设备支持两种指令集:ARM 和 Thumb。 Xcode 使用
默认情况下使用 Thumb 指令,因为使用 Thumb 通常会减少
相对于 ARM,代码大小减少约 35%。应用程序具有
如果使用 ARM,大量浮点代码可能会表现得更好
指示而不是拇指。您可以关闭您的拇指
应用程序,因此它可以通过设置 Compile for Thumb 来针对 ARM 进行编译
构建设置为否。
但是,我在构建设置中找不到任何“Compile for Thumb”设置。他们重命名了吗?或者现在 Xcode 4 不支持此功能?
首先,为了提高浮点性能而不要针对 Thumb 指令集进行编译的建议仅适用于旧的 ARMv6 设备。
ARMv7 硬件(iPhone 3G S 及更新版本,包括所有 iPad)使用更高效的 Thumb-2 指令集,不会出现同样的浮点速度下降问题。对于 ARMv7 构建,几乎在所有情况下都建议您为 Thumb 构建。我在我的回答中提供了更多细节here https://stackoverflow.com/a/3311608/19679.
这可能就是为什么此编译器设置不再作为常见选项公开的原因,因为 ARMv7 设备是绝大多数 iOS 设备。
如果您只想对 ARMv6 构建执行此操作,可以转到构建设置并将鼠标悬停在“其他 C 标志”选项上。单击此选项右侧出现的小加号按钮,然后添加 ARMv6 架构的条件。再次执行此操作,为 ARMv7 架构创建一个。在ARMv6架构下,添加额外的编译器标志-mno-thumb
(正如凯文建议的那样)。
您最终应该得到如下所示的结果:
我在我的一个应用程序中执行此操作,因为我确实看到旧版 ARMv6 设备的性能得到了提升。然而,我的另一个应用程序在不为 ARMv6 上的 Thumb 构建时速度较慢,因此您需要首先对其进行分析。
此外,还有(据我所知,该问题已在 4.2.1 中修复)浮点计算在 ARMv6 的 Thumb 下编译错误。如果您使用的是特定版本的 Xcode,则需要执行此操作才能在旧设备上正常运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)