美文网首页
CPU资源消耗原因和解决方案

CPU资源消耗原因和解决方案

作者: 蛮荒星域 | 来源:发表于2016-10-24 19:09 被阅读71次

    对象创建

    对象的创建会分配内存、调整属性,甚至还有读取文件等操作,比较消耗CPU资源,尽量用轻量的对象代替重量的对象,可以对性能有所优化。

    • CALayer比UIView要轻量许多,那么不需要响应触摸事件的控件,用CALayer显示会更加合适。
    • 如果对象不涉及UI操作,则尽量放到后台线程去创建,但可惜的是包含有CALayer的控件,都只能在主线程创建和操作。
    • 通过Storyboard创建视图对象时,其资源消耗会比直接通过代码创建对象要大非常多,在性能敏感的界面里,Storyboard并不是一个好的技术选择
    • 尽量推迟对象创建的时间,并把对象的创建分散到多个任务中去。
    • 如果对象可以复用,并且复用的代价比释放、创建新对象要小,那么这类对象应当尽量放到一个缓存池里复用。

    对象调整

    对象的调整也经常是消耗CPU资源的地方。

    • 对UIView的属性进行调整时,消耗的资源要远大于一般的属性,所以在应用中,应该尽量避免减少不必要的属性修改。
    • 优化性能时,应该尽量避免调整视图层次、添加和移除视图。

    对象销毁

    对象的销毁虽然消耗资源不多,但累积起来也是不容忽视的。通常当容器类持有大量对象时,其销毁的资源消耗就非常明显。

    • 如果对象可以放到后台线程去释放,那就挪到后台线程去。
    • 把对象捕获到block中,然后扔到后台队列去随便发送个消息以避免编译器警告,就可以让对象在后台线程销毁了。
      诸如:
    NSArray *tmp = self.array;
    self.array = nil;
    dispatch_async(queue, ^{
        [tmp class];
    });```

    相关文章

      网友评论

          本文标题:CPU资源消耗原因和解决方案

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