“完全硬件加速”的神话

一款“完全硬件加速完整网络平台”的浏览器应付一个简单的HTML滚动测试用例应该没有任何问题,不是吗?在你的机器上的浏览器里试试这个测试用例吧。在我的笔记本电脑上全屏运行时,IE9 RC1用时是火狐4的10倍之多。对我而言,这看起来没怎么加速过。查看源代码,你会看到这个测试用例并不复杂。

当我们在火狐中为GPU加速设计“层”框架时,目标之一就是加速页面的滚动,特别是在页面里有些部分随你的滚动操作而移动,同时其它部分不动——就像那个测试用例一样。我们有一个叫做“框架层构建器”,它可以将要移动的部分和固定的部分分离,将它们指派到独立的“层”里面。(CSS的变化让这个分离变得惊人地困难,不过那是另一篇博客里的主题了……)每个层会得到放入了需要绘制的层内容的显存缓冲。当我们滚动的时候,我们仅需要绘制已经滚动进我们视野的那些内容,然后我们使用GPU在新的位置把层合成起来。

我不能很确定地说IE9也是这么做的,但是在上面那个测试中说明了IE9仅仅是简单地在每次滚动的时候重绘了整个页面。这样不能最佳地利用硬件。

我不是要在这里攻击IE9,我只是说的是它的广告营销。微软的所谓IE9是浏览器里面利用GPU最好的这个消息是无稽之谈。在上述的例子中,通过设计,火狐的渲染架构更好地利用了GPU。微软宣称的硬件加速“完整网络平台”无疑是可笑的,因为“完整网络平台”包含了诸如HTML解析、JavaScript执行以及DOM操作,哪一个都不适合简单的运行在现今的GPU上,IE9也不是这么做的。(我假设微软的“硬件加速”表示“使用GPU”……如果它确实表示“使用硬件”,那就不用说这么多了。:-) )微软鄙视地宣称“「其它浏览器」选择了加速网络平台的一小部分”是虚假的,因为那恰恰是他们自己所做的事。

【原文作者:Robert O’Callahan】

分类:Mozilla

对此文章发表回复