在没有关闭H/W加速的情况下优化CSS3动画会让它在GPU上运行得更快吗
Would optimizing a CSS3 animation without H/W acceleration off make it run faster on GPU afterwards?
这个问题一开始听起来很奇怪,但请耐心等待。
我写了一个基于setTimeout的基准测试(类似于stats.js),目的是比较动画在不同条件下的表现(比如添加不同的CSS3属性)。对于(简单的)例子,我会用旋转和长方体阴影设置动画,然后在第二次运行中删除旋转,在第三次运行中移除长方体阴影。之后,我会有3个基准数字来比较每个动画的表现。
只要动画不是GPU加速的(由于明显的原因,即H/W加速将动画从页面的单进程结构中删除),这就可以很好地工作。
但这也让我想到了一个价值百万美元的问题——如果我在没有GPU加速的情况下优化一些东西以更好地运行,这是否意味着在GPU加速打开的情况下,同样优化的动画会更好地运行(更快或使用更少的内存)?还是适用不同的规则?
让我给你举一个简单的例子。CSS3盒子阴影几乎在任何动画中都会扼杀性能。在更简单的情况下,您可以通过将CSS3长方体阴影替换为类似阴影的光栅化(PNG?)图像来提高性能。然而,在GPU打开的情况下,其好处并不是肉眼可见的,因为这两个动画看起来运行速度几乎相同(因为我无法跟踪GPU打开时的性能变化)。那么,同样的规则适用于GPU的打开和关闭吗?
我最初的冲动是——一旦某个东西被优化了——无论GPU打开还是关闭,它都能运行得更好。但正如我在下面的评论中提到的(如果我理解错误,请纠正我),但硬件加速元素在GPU上缓存为预渲染光栅纹理。如果这是真的——如果我的阴影是CSS3框阴影或基于图像的PNG阴影,为什么会有什么不同?我的意思是,在GPU打开的情况下,这两个元素都会变成光栅化的纹理,对吧?所以我的优化在GPU打开的情况下没有任何意义?(除非内存使用率再次出现差异…)
当然。看看这里,了解一下GPU加速的作用和不作用。但总的来说,是的,它将保留您的大部分优化。现在,在相对意义上,给定的优化将在GPU卸载后对性能产生多大影响。。这是一个很难回答的问题。
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Angularjs代码未在匿名函数中运行
- jquery设置为使用参数运行
- 如何根据时间运行不同的脚本
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 将文本框链接到由按钮运行的javascript公式
- 为什么不是't运行此Javascript的Chrome
- ng应用程序使脚本无限运行
- 如何在运行时在angular 2中加载外部js脚本
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何使用JS/nightwatchjs并行运行多个测试
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- 我的HTML按钮没有在Javascript中运行
- 在没有关闭H/W加速的情况下优化CSS3动画会让它在GPU上运行得更快吗