专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

iOS Dynamic Framework 对App启动时间影响实测

Cocoa开发者社区  · 公众号  · ios  · 2016-11-24 08:13

正文

请到「今天看啥」查看全文



测试的方法就采用 iOS 10 提供的新的环境变量 DYLD_PRINT_STATISTICS 输出的app启动时间。Xcode的版本是8.1,测试设备是iphone 6。cocoapod版本1.1。


注意,测试过程发现每次获得的时间统计都不一致,所以我这里的数据可能和你自己测试得到的不同 ,但是我认为这种偏差不影响定性。


基准线:空的OC项目 VS 空的Swift项目


创建两个没有任何业务逻辑的空的项目。



纯OC项目的启动时间



纯swift空项目的启动时间


大概有10毫秒的差异。这个差距考虑到测量的偏差可以认为两者几乎是一致的。


但是有时会出现swift加载忽然提高到400ms的情况。这是因为系统的动态framework只会加载一份。假设10个app启动都用到了UIKit,系统内部也只加载了一份UIKit。所以有时swift项目启动的时候刚好用到了系统framework没有缓存,就会显得的长一点。


6个framework


现在我们对比有代码的情况。两个项目分别加入5个依赖。


这是OC项目的6个依赖:

  pod 'AFNetworking', '~> 3.0'
  pod 'Masonry'
  pod 'MJRefresh'
  pod 'SDWebImage'
  pod 'MBProgressHUD'
  pod 'IQKeyboardManager'


这是swift项目的6个依赖,为了模拟真实生产中依然使用一些OC库的情况,将3个库换成了swift编码的,保留了3个OC库:

  pod 'Alamofire'
  pod 'SnapKit'
  pod 'MJRefresh'
  pod 'Kingfisher'
  pod 'MBProgressHUD'
  pod 'IQKeyboardManager'


OC的启动时间在70-100ms左右。这里取快的情况的数据:



OC6个依赖的启动时间


swift项目在第一次安装时的启动时间在dylib会多100ms,不知为何。swift项目在已经安装后运行打开的成绩:



swift6个依赖


列一个横向对比图:


结论








请到「今天看啥」查看全文