Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.6 向 60 fps 进发(二):Composite 优化 与 Painting 优化 #186

Open
1 task done
EthanLin-TWer opened this issue Aug 11, 2017 · 0 comments
Open
1 task done

Comments

@EthanLin-TWer
Copy link
Owner

EthanLin-TWer commented Aug 11, 2017

painting 是性能最大的杀器。80%原则应该先寻找这部分的优化。

这个 Layer 的概念模型,感受一下。通过把不同的内容放在不同的「层」,从而渲染时只需要「平移、覆盖」过去,而不需要擦除原来的全部重画。技术上,如何实现不同的「层」呢?如何有划分不同的层呢?如何 profile 层带来的 painting 方面的影响呢?

技术上,有很多手段可以「告诉浏览器为元素创建独立的层」,比如一些 CSS 元素的应用(position: absolute/relativevisibilitytransform 等)。从底层实现原理来看,最终是通过 z-index 来区分,具体数值无所谓,只要可以表达「大小」和「相等」关系即可。

will-change: transform 适用于你有很多元素的「移动」、「位置变换」等情形,为每个元素创建自己的一个层,不会导致整个画面重绘。目测可以节省大量的效率。

当然,每多用一个层,会增加浏览器的 RAM 内存和性能等开销,与之节省的 repaint 开销相比,是否值得,就是一个值得权衡的问题了。

目标是:Painting 2ms,Composite Layers 2ms。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant