最近收到测试同学的一份报告,其中提到视频号fps测试结果均值只有43,而视频号内部搭建的fps监控报告每日在50fps以上,两个测试结果口径无法对齐,需要有一个合理的解释。
本篇文章记录寻求解释的过程。
测试同学使用什么工具测量的FPS?
测试同学使用Perfdog工具进行fps测量,视频号内部fps监控工具使用CADisplayLink进行fps测量。
Perfdog 和 CADisplayLink 测量fps有什么区别?(重点)
CADisplayLink是一个定时器,它会在每次屏幕刷新时调用回调方法,因此可以统计每秒钟回调方法被调用的次数,从而计算出FPS。由于CADisplayLink是在主线程中执行的,因此它的测量精度受到主线程中其他任务的影响,如果在回调方法中进行了耗时操作,可能会导致测量结果不准确。此外,由于CADisplayLink的回调方法是在每次屏幕刷新时被调用的,因此它的测量精度受到屏幕刷新频率的影响,如果屏幕刷新频率不稳定,也会影响测量结果的准确性。
Perfdog是一款性能测试工具,它可以用于检测设备的性能问题,包括FPS。Perfdog通过监听VSYNC信号和获取时间戳来统计绘制帧数和计算FPS,它的测量精度相对较高,不受主线程中其他任务和屏幕刷新频率的影响。同时,Perfdog还可以为开发者提供更详细的性能数据,例如CPU和GPU的占用率等,帮助开发者更全面地了解设备的性能情况。
———>
总结来说:
- Perfdog是从【感官】层面衡量是否流畅的指标,它与所播放的视频帧率强相关,如果分别播放30帧和60帧的视频,即使其它外部条件都一致(比如机型、内存、环境等等),使用Perfdog进行测量时播放60帧视频的fps会更高。
- CADisplayLink是更加可以衡量机器【是否卡顿】的fps指标,它与播放的视频无关,仅与主线程是否卡顿有关。
使用哪个方案进行fps监控?
正如上面所言,使用什么方式进行监控要从需求出发。
如果你是想进行竞品调研,比如你想调研视频号、抖音、快手这三家的感官fps从而大致推断出他们视频的帧率上限,那么你可以使用Perfdog进行fps监控。
如果你是开发人员,想进行掉帧和卡顿的检测,那么这时最好使用CADisplayLink进行fps监控。