|
|
1
53
其中一个更大的区别是,armv6体系结构对双精度浮点运算有硬件支持,而armv7只对双精度浮点运算提供传统的软件支持。 作为补偿,armv7架构有一个“NEON”单元,它为单精度浮点运算提供了极快的硬件支持。
苹果在今年的WWDC会议上介绍了armv6和armv7之间的许多差异,并介绍了加速框架。这些视频应该仍然可以在iTunes上看到(从7月10日开始)。 |
|
|
2
77
较老的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
霓虹灯必须明确编码,你不能通过简单的重新编译来利用它,但如果你能投入时间,它可以加速多媒体/游戏操作8倍。然而thumb-2在代码大小上几乎是免费的,几乎没有缺点(与ARMv6上的thumb相反,它使得浮点代码比ARM模式慢得多)。当然,在ARMv7中添加另一个版本的可执行文件不会减少可执行文件的大小,但会减少内存、缓存等中的代码。 |
|
|
4
3
不为一个或另一个编译的唯一原因是减少应用程序的大小,因为它只需要一个编译版本的代码。但是除非你有一个非常大的代码库,否则这个文件大小的差异将是非常小的。 |
|
|
5
3
arm7对iPodtouch(第三代)和iPhone3GS及更新版本进行了更优化。为旧设备构建时,需要使用“Standard/arm6+arm7”。实际上,我在应用程序中没有看到太多的性能差异。 |
|
|
George Kim · 如何在iOS中模拟特定坐标空间中的触摸? 1 年前 |
|
|
BENG · 协调C++和Objective-C中结构的填充 1 年前 |
|
|
Community wiki · iPhone上ivar的继承问题 2 年前 |
|
|
Community wiki · 在OpenGL中显示YUV 2 年前 |
|
|
YosiFZ · pod更新依赖关系pod 2 年前 |
|
|
Community wiki · 查找iOS日历 2 年前 |