CPU速度与负载的博弈

CPU:速度与负载的博弈

在性能的问题中,,一般会提到两种问题:一种是I/O密集型问题,另一种是CPU密集型问题的问题。这里分析CPU性能问题。

CPU问题无非分为三类:

CPU资源冗余使用

关于这个问题,可以是算法问题,有时明明可以遍历一次的却遍历两次,主要出现在查找、排序、删除等环节;也可以是没有cache,明明解码过一次的图片还重复解码。还有明明使用int就足够,偏偏要用long,导致CPU的运算压力多出4倍。

CPU资源争抢:资源争抢也有几种经典情况

1.抢主线程的CPU资源。这是常见的问题,关键是主线程起码在Android6.0版之前没有renderthread的时候,其繁忙程度就决定了是否会引发用户卡顿的问题,经典例子就是主线程的Handler优化。

2.抢音视频的CPU资源。更主线程的情况不同,音视频解码本身就消耗大量的CPU资源,同时音视频编解码对于解码的速度是有硬件要求的,达不到就会有产生播放流畅度的问题。最常见的情况就是CPU满负载,除了耗电很恶劣外,会让音视频没有足够的资源保持流畅度播放。

一般有一些几种方式解决:第一、排除非核心业务的消耗。第二、优化自身的性能消耗,把CPU负载优化为GPU负载,最经典的就是利用renderscript来处理视频中的影像信息。

3.大家平等,互相抢资源。前面两点都有主次之分,强弱之别,但是遇到开了多个相同的进程业务,那就会互相抢占资源,效果就是非常差。典型的三个和尚没水喝的案例。因此按照核心数、控制线程数还是有道理的。

CPU资源利用率低

CPU就是速度与负载的博弈,用的多会耗电、会卡顿,用的少也会有问题,像启动、界面切换、音视频编解码这些场景,为了保证其速度,需要好好利用CPU核心数的不断飙升。

而导致无法充分利用CPU的因素,除了前面说的磁盘和网络I/O外,还有锁操作、sleep等。其中锁的优化,一般在锁的范围上,主要是尽可能的缩减范围。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值