Open andycall opened 3 years ago
Kraken 内部针对 layout,paint 以及 I/O 做了很多优化的处理。这些功能使用现有的测试工具很难进行覆盖,可能在后面的某个版本会由于某些变更而坏掉,即使改坏了,也要过很久才会发现,从而导致很长一段时间内拖慢 Kraken 整体的性能。
因此我们必须要有一些可靠的手段,持续保证 Kraken 运行过程中所使用的优化手段能够正常 work。
常规的渲染时间并不可靠,我们需要更精确的数据,能够精确到 RenderObject paint layout 的次数,每个网络资源加载的次数,以及命中 Cache 的次数,Element,RenderObject 销毁的频率等关键性能指标数据。并且我们还可以构造很多的测试用例来模拟各种各样的场景,并能够实时统计到我们所关心的这些关键数据的变化。
在测试环境内,添加 performance track API
监控 Layout,Paint,Element,RenderObject 创建
let div = document.createElement('div'); document.body.appendChild(div); console.log(div.profile()); // { layoutCount: 1, paintCount: 1 ... }
监控网络资源
let img = document.createElement('div'); img.src = '...'; document.body.appendChild(img); console.log(img.profile()); // { imgLoadTime: 20, imgLoadCount: 1 ... }
这个不是标准的 API,需要先调研下 W3C 标准里有没有解决类似的 API:
https://w3c.github.io/paint-timing/ https://www.w3.org/TR/resource-timing-1/
使用场景 | Use case
Kraken 内部针对 layout,paint 以及 I/O 做了很多优化的处理。这些功能使用现有的测试工具很难进行覆盖,可能在后面的某个版本会由于某些变更而坏掉,即使改坏了,也要过很久才会发现,从而导致很长一段时间内拖慢 Kraken 整体的性能。
因此我们必须要有一些可靠的手段,持续保证 Kraken 运行过程中所使用的优化手段能够正常 work。
常规的渲染时间并不可靠,我们需要更精确的数据,能够精确到 RenderObject paint layout 的次数,每个网络资源加载的次数,以及命中 Cache 的次数,Element,RenderObject 销毁的频率等关键性能指标数据。并且我们还可以构造很多的测试用例来模拟各种各样的场景,并能够实时统计到我们所关心的这些关键数据的变化。
提案 | Proposal
在测试环境内,添加 performance track API
监控 Layout,Paint,Element,RenderObject 创建
监控网络资源