【发布时间】:2018-01-30 00:51:50
【问题描述】:
如何优化已编译的 WebKit 浏览器以充分利用 GPU?
背景
我和我的团队正致力于配置一个 Linux 机器 (CentOS) 以显示具有流畅的 CSS 驱动动画的全屏 HTML。该盒子具有足够的 GPU 和 CPU 能力,并且能够在 Chromium 中轻松播放这些动画。
但是,我们正在尝试使用纯 WebKit 来呈现这些动画,方法是在 Python 中使用 WebKitGTK+ 并从源代码将 WebKit 编译为一个简单的浏览器。
当前状态
在这两个“纯”webkit 应用程序中,动画比 Chromium 上的慢得多,这让我们摸不着头脑来回答两者之间究竟的不同之处。我们知道 Chromium 使用 Blink,WebKit 的一个分支,我们目前认为性能差异是由于 Chromium、Safari 和其他基于 WebKit 的浏览器都使用自己的图形组件,这些组件独立于 WebKit 和 Web Core 本身,根据我们阅读的内容。
如果我们可以自定义我们的 WebKit 构建以执行我们在 Chromium 中看到的规格的一半,那就太好了,但我们不确定从哪里开始。
我想知道...
- 我们关于单独图形组件的假设是否正确?
- 我们有哪些选项可以在像我们这样的“纯”WebKit 浏览器中优化 CSS 动画性能?
【问题讨论】:
-
那么为什么不在 Blink 中建立你的 fork 呢?什么 WebKit 版本?此外,尽管过去 2 天 jsperf.com 似乎已关闭,但当我将 Chrome (Mac) 升级到 64.0.xxxx 并运行基准测试时,HTML 呈现性能是 Chrome 在那里记录的最差的。也许 Blink 继承了 WebKit 的“坏”版本?
-
1.你的意思是我们的代码? Chromium/Blink 没有满足我们需求的许可证。 2. 不确定我们是否在谈论同一件事。铬是我们的“好”比较。我们发现纯粹构建的 WebKit 的性能很差。
-
嗨,你如何编译 Webkit ?可能需要设置一些参数以更有效地使用您的拱门
-
不确定这是否有用。但是遇到了我想分享的一种情况。最近我们使用transform3d开发了使用大量动画的网页,动画在桌面的chrome和iphone 6plus的ios 11上运行良好。但是在 iphone.6 中的 ios10 上表现非常糟糕,并且页面曾经崩溃得非常糟糕。在经历了一系列优化过程和调试之后,我们发现创建的 transform3d 层在两种实现中都有不同的内存占用,这就是页面崩溃的原因。
-
..所以我们最终决定稍微改变一下动画,这样我们就可以减少一些 transform3d。我这么说的原因是 webkit 版本之间可能存在一些差异,所以你可以从那个角度看。还有一个思路是看GPU处理的帧大小在chromium和webkit上是不是一样。