android页面流畅度(fps)指标分析

来源:互联网 发布:京东淘宝网购物 编辑:程序博客网 时间:2024/04/28 15:08

fps: frame percent seconds; 每秒视图更新的帧数; 也就是UI的流畅度指标;

1 使用shell 命令可以保存fps数据到本地文件,但是文件内容太简单,没多考参考意义;

shell命令格式如下:adb shell dumpsys gfxinfo "com.hlkt123.uplus" > d:\app_fps_log\ysms_fps.txt
       备注:com.hltk123.uplus可以替换为你自己的报名;
">"后面的是你要保存的log文件在PC 文件系统下的路径;

2 在手机打开开发者模式下面的“GPU显示配置文件”

  选中“以列的像是显示于屏幕”,手机运行后的效果图如下


屏幕上有三条曲线:

橙色曲线:“Execute”是指将一帧图像交给合成器(compositor)的时间。这部分占用的时间通常比较少;

红色曲线:“Process”是指Android 2D渲染引擎用在执行“display lists”上的时间。你的UI层级(hierarchy)中的View数量越多,需要执行的绘画命令就越多。

蓝色曲线:“Draw”是指Java层用在创建“display lists”(显示列表)上的时间。它表明运行例如View.onDraw(Canvas)需要多少时间。


提醒:

要以60fps的帧率进行平滑的渲染,每一帧所占用的时间需要少于16ms。

关于“Execute”:

如 果Excute花费很多时间,这就意味着你跑在了系统绘图流水线的前面。Android在运行状态时最多可以用3块缓存,如果此时你的应用还需要一块缓 存,那应用就会被阻塞直到三块中的一块缓存被释放。这种情况的发生一般有两个原因。第一个原因是你的应用在Dalvik(java虚拟机)端画的太快,而 在它的Display list在GPU端执行太慢。第二个原因是你的应用花费太多时间在前几帧的渲染上,一旦流水线满了,它就跟不上,直到动画的完成。这些是我们想在下一个版 本的Android改进的地方。

参考博文:http://blog.sina.com.cn/s/blog_5704bfaf0102vtuu.html



0 0
原创粉丝点击