代码之家  ›  专栏  ›  技术社区  ›  M. Ryan

在编译iPhone应用程序时,armv7比armv6有哪些优势?

  •  67
  • M. Ryan  · 技术社区  · 15 年前

    如果有什么好处的话。。。在文件里找不到任何确凿的证据。

    很显然,armv7是为新版本的iOS。。。速度快吗?小一点?更擅长X?

    6 回复  |  直到 14 年前
        1
  •  53
  •   Ville Laurikari    14 年前

    其中一个更大的区别是,armv6体系结构对双精度浮点运算有硬件支持,而armv7只对双精度浮点运算提供传统的软件支持。

    作为补偿,armv7架构有一个“NEON”单元,它为单精度浮点运算提供了极快的硬件支持。

    苹果在今年的WWDC会议上介绍了armv6和armv7之间的许多差异,并介绍了加速框架。这些视频应该仍然可以在iTunes上看到(从7月10日开始)。

        2
  •  77
  •   Community Mohan Dere    8 年前

    较老的iOS设备(iPhone、iphone3g、第一代和第二代ipodtouch)的cpu只支持armv6指令集。iphone3gs(以及iPad和第三代ipodtouch)有一个更新的处理器,也支持armv7指令集。一般来说,在这些较新的处理器上,armv7的速度更快,建议您至少在以后的应用程序中包含一个armv7构建(在仅限iPad的应用程序中,您可能只需要为armv7构建)。

    正如Jasarien所指出的,指令集之间最大的差异在于浮点运算。在armv6上,应用程序倾向于使用精简的Thumb指令集来生成更小的二进制文件,但是Thumb浮点性能非常糟糕。因此,您需要禁用Thumb,因为您需要更快的浮点计算。在armv7上,Thumb-2指令集不再有此限制,因此苹果建议您几乎一直使用它进行编译。

    您可以将Thumb build设置设置为有条件的,以便对较旧的设备关闭Thumb build设置,对较新的设备打开Thumb build设置。为此,转到Xcode构建设置并选择compileforthumb选项。转到屏幕左下角的菜单并选择添加生成设置条件选项。在新的构建设置条件中,为体系结构选择ARMv6,为其关闭Thumb,添加另一个条件,为其体系结构选择ARMv7,并为其启用Thumb。

    here 在armv6中,硬件支持单精度和双精度浮点运算。我发现单精度算法在这个平台上的性能稍好一些,可能是因为缓存中有更多的操作。在armv7上,NEON SIMD浮点 单元只适用于单精度运算,因此单精度运算和双精度运算在性能上可能存在巨大差异。

    在这个问题上可能感兴趣的其他问题包括:

        3
  •  4
  •   Pierre Lebeaupin    15 年前

    • 霓虹灯

    霓虹灯必须明确编码,你不能通过简单的重新编译来利用它,但如果你能投入时间,它可以加速多媒体/游戏操作8倍。然而thumb-2在代码大小上几乎是免费的,几乎没有缺点(与ARMv6上的thumb相反,它使得浮点代码比ARM模式慢得多)。当然,在ARMv7中添加另一个版本的可执行文件不会减少可执行文件的大小,但会减少内存、缓存等中的代码。

        4
  •  3
  •   Alex Wayne    15 年前

    不为一个或另一个编译的唯一原因是减少应用程序的大小,因为它只需要一个编译版本的代码。但是除非你有一个非常大的代码库,否则这个文件大小的差异将是非常小的。

        5
  •  3
  •   Alex Argo    15 年前

    arm7对iPodtouch(第三代)和iPhone3GS及更新版本进行了更优化。为旧设备构建时,需要使用“Standard/arm6+arm7”。实际上,我在应用程序中没有看到太多的性能差异。