码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发之静态库(六)—— 时空之争

时间:2014-09-14 21:54:57      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   os   使用   ar   文件   2014   

 

    前面的所有试验中,我们的静态库都支持了所有可能的指令集(i386, x86_64, armv7, armv7s, arm64),最大限

度的匹配了所有可能运行该代码的设备,使代码在当前存在的几乎所有iOS设备上都能以最优的性能运行。然而,这样

做是否真的很好,是否真的必要。

 

    我们来做个试验:参考“Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64”生成各种包含特定指令集

的静态库,查看其占用磁盘空间的大小,结果如下

 

bubuko.com,布布扣

 

从上图可以很清楚的看到,生成的二进制文件所支持的指令集越多,其占用的磁盘空间也越大:

 

    支持1种指令集的静态库的大小在53K左右

    支持2种指令集的静态库的大小在106K左右

    支持3种指令集的静态库的大小在159K左右

    支持4种指令集的静态库的大小在212K左右

    支持5种指令集的静态库的大小在265K左右

    

    结论:基本上与所支持的指令集的数量成正比

 

    程序的时间与空间之争历来都是存在的,有些程序注重代码执行的效率,也有些程序注重自身代码的大小,尤其是

移动设备上的应用基本上都是靠无线网络(甚至是3G网络)下载安装的,而且iOS应用只能使用静态库,这个限制无疑

又大大增加了程序本身的大小,App Store中一个应用安装包在几十、几百M甚至几个G都是很常见的,所以App瘦身在

iOS应用中的需求也是很多的。

 

    从“Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64”可知,所有指令集都是向下兼容的。到了2014

年,iPhone3G等标配armv6指令集的设备基本已经绝迹了,而且从XCode4.5开始,也都取消了对armv6指令集的支持,所

以当前只需要考虑armv7及以上的指令集即可。

    我们可以通过减少支持的指令集数目来减小App的大小(效果还相当好),如果我们的App只支持armv7指令集,在

标配arm64指令集的iPhone5S上是可以正常运行的,只是损失了点点性能,当然在其他的设备上也能够正常运行,从而

达到App瘦身的需求。

    事实上,目前AppStore上的一些知名应用也都是这么做的,比如百度地图、腾讯地图通过反汇编工具查看后,也都

只支持armv7指令集。

 

    因此,对于那些性能上没有太高要求的App,尽可能减少其支持的指令集(如只支持armv7指令集),减小其自身大

小,从而在一定程度上增加其下载率。

 

 

iOS开发之静态库(六)—— 时空之争

标签:style   blog   http   io   os   使用   ar   文件   2014   

原文地址:http://www.cnblogs.com/mylizh/p/3971576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!