• iOS


    iOS内存优化基础
    腾讯帧动画优化方案

    基础内存优化

    1.I/O性能优化

    减少I/O次数是性能优化的关键点:

    • 将零碎的内容作为一个整理进行写入
    • 使用合适的I/O操作API
    • 使用合适的线程
    • 使用NSCache做缓存能够减少I/O

    1-1.NSCache

    • 自动清理系统占用的内存
    • NSCache线程安全
    • 缓存对象被清理时会有回调
    • 可以控制是否清理

    2.内存性能

    突然的大量内存需求是会影响相应的:

    • 【强制】优化计算的复杂度从而减少CPU的使用
    • 【强制】在应用相应交互的时候停止没必要的任务处理
    • 【强制】设置合适的Qos
    • 【强制】将定时器任务合并,让Runloop更多时候处于idle状态

    3.控制App的Wake次数(帧动画暂时不考虑)

    通知、VoIP、定位、蓝牙都会使设备被唤醒,唤醒的过程比较大的消耗。

    图片优化进阶

    原理分析

    1.图片加载解码

    比较容易影响性能:

    • 加载图片(取决于CPU和I/O)
      • 提前加载图片(可以设置优先级,优先级高的可以预加载。不可以延迟加载,因为延迟加载不能保证每帧提前加载到图片)
    • 图片解码(比加载图片更加耗时,博文中测试结果是3倍,iOS默认是在主线程图片解码的,但是解码后的图片太大,一般不会缓存到disk中,但是我可以尝试)

    2.缓存

    缓存分为原图片的缓存和解码后的位图数据的缓存。

    3.渲染

    3-1.offscreen rendring

    图片在绘制当前屏幕的时候,显卡需要进行一次渲染,然后在绘制到当前屏幕。
    对于显卡来说,onscreen和offscreen上下文切换时非常昂贵的(设计OpenGL的pipeline和barrier等)。

    - layer mask
    - layer.maskToBounds
    - layer.allowGroupOpacity = YES
    - layer.opcaity < 1.0
    - layer.shouldRasterize = YES
    - layer.cornerRadius
    - layer.edgeAntialiasingMask
    - layer.allowsEdgeAntialiasing
    

    3-2.Blending 混合像素颜色是会导致性能问题

    优化点

    • 精灵序列帧
    • 提前解码在渲染前,不要渲染了去解码
    • 缓存解码后的位图数据 disk 和 内存中,因为有些礼物效果比较普遍使用
    • 图像素材像素尽量对其,尽量减少透明像素
  • 相关阅读:
    pureftp 超时 mlsd
    安卓相机调用适配
    解决多个界面重复共用同一组数据导致数据同步改变(实现数据的完全深拷贝)
    PHP反射API的使用、体会、说明
    c冒泡排序
    iOS开发常用的第三方类库
    修改按钮上图片的大小-iOS
    获取手机通讯录--ios
    根据搜素的字符串改变label包含该字符串的文字
    cell点击按钮崩的一种情况
  • 原文地址:https://www.cnblogs.com/R0SS/p/8708216.html
Copyright © 2020-2023  润新知