我正在开发一个支持 iOS 4.3 及更高版本的 iOS 应用程序。由于某些框架,我无法为 armv7s 存档,所以我删除了 armv7s 支持。它会降低应用程序的性能吗?使用armv7s有什么好处?
1 回答
令人惊讶的是,为两种不同架构生成的机器代码并没有太大差异。总体而言,armv7s 代码看起来与 armv7 代码没有太大区别。但是,有两个具体的差异引起了我的注意。
第一个区别影响整数除法。armv7s 体系结构有两个新的整数除法指令,它们在 armv7 体系结构中不存在。这些整数除法指令在 armv7 上作为函数实现,它至少比 armv7s 上的等效指令慢一个数量级。整数除法在应用程序中很常见(在 Geekbench 中的一百多个地方都调用了它),因此这些新指令应该可以显着提高所有应用程序的性能。
第二个区别影响浮点运算。Xcode 对 armv7s 使用与 armv7 不同的浮点算术指令。Xcode 用于 armv7 的指令将多个操作组合成一条指令,这应该使它们比 Xcode 用于 armv7 的多个独立指令更有效。令人惊讶的是,这些组合浮点指令存在于 armv7 架构中,但 Xcode 并未使用。目前尚不清楚为什么会这样。对于 armv7,这些组合指令只占所有浮点指令的一小部分,因此虽然它们可能会提供优势,但很难确定它们会产生多大的影响。
armv7 和 armv7s 代码之间还有其他差异,但与上面概述的整数除法和浮点算术更改相比,它们的差异很小。应用程序将从 armv7s 构建中受益多少?仅通过检查生成的代码很难说,但如果您是一名开发人员,我认为发布您的应用程序的 armv7s 构建是值得的,特别是如果您的应用程序使用浮点操作。
我从这个链接得到了信息。请通过这个链接了解更多细节。谢谢