美文网首页
iOS性能优化

iOS性能优化

作者: 荒漠现甘泉 | 来源:发表于2019-02-11 18:20 被阅读0次

    启动优化

    启动相关知识

    1.启动分两种:冷启动和热启动
    2.启动的时间分为两部分:main函数执行之前、main函数执行之后
    3.启动流程分析可以参考这篇文章iOS操作系统-- App启动流程分析与优化

    启动优化建议

    1、main函数之前
    (1)减少动态库、合并一些动态库(.dylib/.tbd,系统的framework)
    (2)减少Objc类、分类的数量、减少Selector数量
    2、main函数至应用启动完成
    耗时操作,不要放在finishLaunching方法中
    3、动态库对启动时间的影响测试

    界面优化

    界面相关知识

    1、卡顿的原理
    2、界面流畅度的评测

    界面优化建议

    1、耗时操作,不要放在主线程
    2、合理使用CPU与GPU
    CPU:计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制
    GPU:会把CPU计算好的数据进行渲染

    能耗优化

    1、CPU
         CPU是电能消耗大户,高CPU使用量会迅速消耗掉用户的电池电量。app做的每件事几乎都需要用CPU,所以使用CPU要精打细算,真正有需要时通过分批、定时、有序地执行任务。
    2、设备唤醒
         iOS设备通过睡眠来节能。只要设备被唤醒,屏幕和其他的硬件资源就必须通电,会产生很高的间接功耗。如非必须,app要尽量保持闲置,不要推送消息或用其他方式唤醒设备,特别是app在后台的时候。
    3、网络操作
         大多数app都需要网络操作。网络通信时,蜂窝数据和Wi-Fi等元器件开始工作就会消耗电能。分批传输、减少传输、压缩数据、恰当地处理错误,你的app省电效果会很显著。
    4、图像、动画、视频
         app内容每次更新到屏幕上都需要消耗电能处理像素信息。动画和视频格外耗电。不经意的或者不必要的内容更新同样会消耗电能,所以UI不可见时,应该避免更新其内容。
    5、位置
         很多app为了记录用户的活动或者提供基于位置的服务会进行定位。定位精度越高,定位时间越长,消耗电量也就越多。所以app应该尽量降低定位精度、缩短定位时间。不需要位置信息之后立即停止定位。
    6、动作传感器
         长时间用不上加速度计、陀螺仪、磁力计等设备的动作数据时,应该停止更新数据,不然也会浪费电能。应按需获取,用完即停。
    7、蓝牙
         蓝牙活动频度太高会消耗电能,应该尽量分批、减少数据轮询等操作。

    网络优化

    1、资源优化基本就是尽可能的缩小传输数据的大小
    2、可以使用ProtocolBuffer代替Json进行数据传输
    Protocolbuffer(简称Protobuf或PB)是由Google推出的一种数据交换格式,它独立于语言,独立于平台。ProtocolBuffer代替Json进行数据传输,因为ProtocolBuffer数据比Json更小,也是跨平台的,序列号与反序列化也很简单。在实际项目中,当数据变小的时候会显著提高传输速度。

    安装包瘦身

    1、资源优化

    2、可执行文件瘦身

    • 删除无用代码 app code
    • 静态库瘦身
      • 查看静态库支持的CPU架构 (lipo -info libname.a (或libname.framework/libname))
      • 合并静态库 (lipo -create libname-armv7.a libname-armv7s.a libname-i386.a -output libname.a)
      • 静态库拆分 (lipo libname.a -thin armv7 -output libname-armv7.a)
    • 编译器优化
      • Strip Linked Product、Make Strings Read-Only、Symbols Hidden by Default设置为YES
      • 去掉异常支持,Enable C++ Exceptions、Enable Objective-C Exceptions设置为NO, Other C Flags添加-fno-exceptions

    相关文章

      网友评论

          本文标题:iOS性能优化

          本文链接:https://www.haomeiwen.com/subject/uzzqeqtx.html