MotionMark是Apple开发的一个浏览器图形性能测试套件,用来测试和评估Safari/WebKit的图形性能,图形性能并不仅仅包括光栅化和合成,而是涵盖了完整的浏览器渲染流水线,包括DOM API,样式计算,排版等。
MotionMark 是 Apple 开发的一个浏览器图形性能测试套件,用来测试和评估 Safari/WebKit 的图形性能,这里的图形性能并不仅仅包括光栅化和合成,而是涵盖了完整的浏览器渲染流水线,包括 DOM API,样式计算,排版等。
MotionMark 虽然不能涵盖浏览器图形性能的所有方面,但是作为衡量浏览器图形性能的其中一项指标,还是有不错的参考价值。Chromium 目前也会使用 MotionMark 分数作为其中一项指标来衡量自身图形性能优化的成果。
MotionMark 的一个主要特性是自适应动态调整测试的复杂度,从而更好地适应不同的设备,这些设备的性能可能差异很大,比如 PC 的性能通常几倍甚至十倍于移动设备。MotionMark 的每一项测试都包含一个连续的动画,它收集动画每一帧的复杂度和耗时等数据,然后计算出一个分数(复杂度越高,耗时越少,分数就越高),最后根据所有项目的成绩计算出一个总得分,分数越高代表性能越好。
因为 MotionMark 动态调整复杂度的缘故,导致测试的结果波动较大,所以除了分数外,测试还给出一个波动范围,通常需要测试多次,取波动值较小的为准。
这篇文章主要分析 MotionMark 每一项测试的测试内容,在 Chromium 上,该项测试的主要性能瓶颈在哪里,是在 DOM,是在样式计算和排版,还是在光栅化和合成。如果读者对浏览器的图形性能感兴趣,可以通过这篇文章更好地了解如何通过 MotionMark 的成绩来衡量浏览器的图形性能。
用于分析的 Chromium 版本是 Chrome 77 for Android,我们可以看到从 75 开始,Chrome for Android 已经正式开启了 OOPR,普通图层分块光栅化的主要耗时从原来的光栅化线程(CompositorTileWorker)相当大的一部分转移到了 GPU 线程(CrGpuMain),光栅化的耗时在两个线程上都有一定的比例。测试的设备是 Google Pixel 手机。因为不同的设备有可能有不同的性能瓶颈,所以文章的结论不是普适的,只能作为一个参考。