#13 楼 @weamylady 你不就是大神么
#11 楼 @weamylady 我就喜欢编码经验不足的人。一同进步不好么
#9 楼 @weamylady 那就等你报名了
写的很好,希望有更多的测试人员能明白你的意思
用正则表达式试试
头发丝占座
已 fork,谢谢分享
#11 楼 @kasi 前辈,我把上面说的几点添加到博客了,但是有一个地方不明白,好像没有 jank 的值,
jankiness = [max(0, round(change)) for change in normalized_changes]
pause_threshold = 20
jank_count = sum(1 for change in jankiness
if change > 0 and change < pause_threshold)
只有 jank_count 也就是掉帧的次数。 看它的解释好像是说,jank 是一种状态,就是当前帧的数据通过下面公司得到的数值与之前行的数值发生改变,说明该帧属于掉帧。
# ceil((C - A) / refresh-period)
#
# (each time the number above changes, we have a "jank").
# If this happens a lot during an animation, the animation appears
# janky, even if it runs at 60 fps in average.
#9 楼 @kasi kasi 前辈,
1.你的意思是当允许使用--latency-clear 命令时候,该帖所使用的方法才有作用。也就是service call SurfaceFlinger 1013
才会起作用。
2.如果--latency-clear 不能使用的时候,还是得通过_GetSurfaceFlingerFrameData
来得到。
3.但是不管采用上面方法的任何一种,得到的 fps 值,还需要减去 jank(掉帧)。即 (fps-jank) 才是正确 fps 的值。
4.所以我还需要知道 jank 的计算,以及第二种情况下 fps 的计算方法。
5.第一种方式计算获取到的 fps 也是有问题的,得改成下面的公式,在原来的基础上-1
FPS = (indexA-indexB-1)/(timeA-timeB)
不知道理解的对不?还望前辈指点
#6 楼 @sziitash 经过分析得出的结论如下:
要想获得获取 fps 值,需要 3 步:
1.adb shell dumpsys SurfaceFlinger --latency 命令产生 fps 数据.
2.通过 service call SurfaceFlinger 1013 来得到当前帧的索引以及时间戳,设置为 A = {indexA,timeA}.
3.公式:
设上一次的数据为 B = {indexB,timeB}
FPS = (indexA-indexB)/(timeA-timeB)
具体分析过程请看Android 性能测试之 fps 获取 ,感谢@qddegtya的帮忙