MotionMark 1.2

MotionMark Version 1.2

今天我们宣布对 MotionMark 基准测试进行了更新。这是一次相对较小的更新,旨在提高测试的可靠性和可重现性。最大的变化是移除了 Focus 子测试,该测试在测试结果中造成了显著的差异,并且未能测量其预期要测量的指标。

基准测试框架

MotionMark 1.2 中的大多数更改旨在减少基准测试多次运行之间的差异。我们将每次测试之间的预热时间增加了 1900 毫秒,并要求在测试之间至少渲染 30 帧,以减少相邻测试之间的干扰。不同的测试会对图形渲染管线的不同部分造成压力,如果它们没有更强的分段,它们的处理可能会重叠。

我们还实施了几种不同的策略来降低基准测试对单个帧时间的敏感度。首先是确保基准测试绝不会根据单个帧的时间做出任何难度提升决策,而是要求至少有 9 帧之后才调整复杂度。此外,基准测试现在会丢弃异常帧时间。

Focus 子测试

现代浏览器使用合成架构,其中部分图形工作负责将单个元素绘制到图层中,而其他图形工作负责将图层合成为最终图像。这两个部分之间的接口在不同浏览器中的行为有所不同,并且可能确实是完全异步的,如果合成器运行速度慢于元素绘制,可能几乎不会提供反压。

在异步运行合成器的浏览器引擎中(如 WebKit),Focus 子测试测量的是工作描述可以多快地交付给合成器,而不是合成器实际执行该工作的速度——而这才是该子测试试图测量的内容。此外,Focus 子测试中的反压是间接的,它通过调度器传递,因此会产生噪音。这导致在元素绘制性能相对较高而合成器性能相对较低的机器上,子测试分数出现巨大差异。

结论

MotionMark 1.2 在各种相对性能不同的机器上产生的得分差异明显小于 MotionMark 的先前版本。由于移除了 Focus 子测试,MotionMark 1.2 也更能反映跨浏览器的真实图形性能。

更新日志

以下是 MotionMark 1.2 中的所有更改列表