ope*_*rog 28 compiler-construction xcode arm ios xcode4
如果有许多浮点运算正在进行,Apple建议编译ARM而不是拇指.我的整个应用程序几乎是一个大的浮点操作.
以下是他们在iOS应用开发工作流程指南中所说的内容:
iOS设备支持两个指令集,ARM和Thumb.默认情况下,Xcode使用Thumb指令,因为使用Thumb通常会将代码大小相对于ARM减少约35%.如果使用ARM指令而不是Thumb,那么具有广泛浮点代码的应用程序可能会表现得更好.您可以为应用程序关闭Thumb,以便通过将Compile for Thumb build设置为No来编译ARM.
但是,我在构建设置中找不到任何"Compile for Thumb"设置.他们重命名了吗?或者Xcode 4现在不可用?
Bra*_*son 49
首先,不为Thumb指令集编译以提高浮点性能的建议仅适用于旧的ARMv6设备.
ARMv7硬件(iPhone 3G S和更新版本,包括所有iPad)使用更高效的Thumb-2指令集,它不会遭受相同类型的浮点减速.对于ARMv7版本,几乎在所有情况下都建议您为Thumb构建.我在这里的答案中提供了更多细节.
这可能就是为什么此编译器设置不再作为常见选项公开的原因,因为ARMv7设备是绝大多数iOS设备.
如果您只想为ARMv6版本执行此操作,则可以转到构建设置并将鼠标悬停在"其他C标志"选项上.单击此选项右侧显示的小加号按钮,为ARMv6体系结构添加条件.再次执行此操作以为ARMv7体系结构创建一个.在ARMv6架构下,添加额外的编译器标志-mno-thumb
(如Kevin建议的那样).
您最终应该看到如下所示的内容:
我在我的一个应用程序中执行此操作,因为我确实看到旧的ARMv6设备的性能提升.但是,在ARMv6上没有为Thumb构建时,我的另一个应用程序速度较慢,因此您需要先对其进行分析.
此外,LLVM编译器3.0中目前存在一个错误,该错误随Xcode 4.2一起提供(此后我已经在4.2.1中修复了这个错误,其中浮点计算在Thumb for ARMv6下编译错误).如果您使用的是特定版本的Xcode,则需要在旧设备上执行此操作以获得正确的行为.
归档时间: |
|
查看次数: |
12238 次 |
最近记录: |