APP优化篇——优化关键评估指标

目前,随着APP行业的竞争越来越激烈,功能也越发丰富,人们评价一款产品的优秀程度,已经不能单纯通过 ”是否具备某些功能“ 来评价某个产品了,纯技术壁垒的产品已经是凤毛麟角,从用户角度,客户端不仅仅需要具备用户的基本诉求功能,流畅程度、发热程度、启动速度等等,分分钟可能让用户放弃你的APP,从而拥向你竞品APP的怀抱。

随着H5技术的快速发展,微信小程序的出现,使用前端相关语言开发,无论是“网页版”APP还是混合开发模式,市场占有率也不断增高,试想如果前端语言开发的产品和Native开发的产品,体验差不多,也就没有原生APP什么事情了, 毕竟开发成本摆在那。谁都不是sha zi,能用一份价格,搞定多个环境(Android手机、iOS手机、PC),相信老板们是很精明的。

那么作为一名Android APP的研发人员,我们应该从哪些角度来优化我们的APP以提高竞争力呢?又应该以什么“标准”来评价自己所做的优化工作是否合理呢?基于这些背景,我总结了一些关于产品优化的几个维度,如图:

1.CPU占用率

网友们也称作使用率,通俗的可以理解为APP在运行过程中,对于CPU资源的使用情况,若CPU使用率过高,会使整个手机无法响应用户,整体性能降低,影响用户体验,也容易引起ANR等问题,故我们的目标是APP正常运行的情况下,CPU使用率越低为好

常用的测试方法:使用adb命令;使用Android studio profiler;使用各种云测平台;

方法1、基于adb shell dumpsys cpuinfo的方式,此方式可以测试手机中任意packageName的app
adb shell "dumpsys cpuinfo | grep package"     //其中package为具体应用的包名信息
例如: adb shell "dumpsys cpuinfo | grep com.android.browser"  //当前系统浏览器的情况

第一个参数:0.1%即为当前情况下,该应用的CPU使用情况,具体一目了然。

方法2、读取方 /proc/pid/stat的方式
adb  shell cat /proc/stat
Linux层有公共目录。很多公共信息资源由两个虚拟的文件系统提供:
    /proc:包括内存,CPU,网络等
    /sys:设备驱动,网络环境(/sys/class/net/)等
通过/proc这个伪文件系统,我们可以和内核内部数据结构进行交互,获取有关进程的有用信息。

具体的解释,可以看参考文档,里面有具体的说明,图中详细记载8核CPU的使用情况。

方法3、基于Linux的top命令
adb shell top
常用参数一般有如下:
    -m:表示需要展示的进程数目
    -n:结束前需要刷新多少次
    -d:刷新间隔(单位秒)
    -s:按照什么列排序(CPU,VSS,RSS,THR)

输出的信息里面主要包括:
    PID(进程ID),CPU%(CPU使用率),VSS(虚拟内存使用量),RSS(实际物理内存使用量)等等。

我们一般关心的数据列就是我们CPU%。
例如:adb shell top -m 1 -d 0 -n 1

最直观的,应该是使用Android studio的Profiler工具了,具体代码中,出现的方法占用均有明确的信息(当然前提是APP是自己的,如果是别人的APP,用adb测试):

工具中,详细展示了各个进程的使用情况,通过record一段时间记录,来分析当前环境下,具体代码占用CPU的信息。

参考:https://www.jianshu.com/p/31b1a4aef550

2、内存占用:

在Android系统中,每个APP进程除了同其他进程共享(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(=私有内存+比例分配共享内存)来衡量一个APP的内存开销。移动设备的内存资源是非常有限,为每个APP进程分配的私有内存也是有限制。一方面我们要合理的申请内存使用,以免导致频繁的GC(垃圾回收机制)影响性能和大对象申请发生内存溢出;另一方面,我们要及时释放内存,以免发生内存泄漏。

关于内存涉及几个概念:

Terms
    VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
    RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
    PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
    USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

参考:https://blog.csdn.net/adaptiver/article/details/7084364

常用的测试方法:使用adb命令;使用Android studio profiler;

方法1、基于adb shell dumpsys meminfo的方式,打印详细的当前环境PSS使用信息
adb shell "dumpsys meminfo | grep package"     //其中package为具体应用的包名信息
例如: adb shell "dumpsys meminfo | 具体应用包名"  //当前系统某个APP的总体情况

例如: adb shell dumpsys meminfo 具体应用包名       //当前系统某个APP的详细信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值