因此,我了解到,为了在Web浏览器中运行动画时,为了保持每秒60帧的标准速度,我们只能获得每帧16毫秒左右的时间来执行我们想要执行的任务。浏览器通常必须经历渲染管道的所有步骤才能渲染每一帧:
但是,像Paul Lewis这样的专家说,实际上,我们每帧只有10毫秒才能完成我们的任务,因为浏览器每帧都有一些“开销”和“内务处理”。我想知道这些“间接费用”和“客房整理”任务实际上是什么?
“开销”因浏览器而异,并且大多数情况并非在“每一帧”上发生,而是全部累加,并且由浏览器或由常见的客户端第三方代码(例如Google Analytics(分析))执行的开销任务也需要花费宝贵的毫秒数。常见的开销任务包括:
scroll
,mousemove
和某些触摸事件(例如,如果您具有生成热图的分析库,则该软件可能会跟踪每个鼠标操作和触摸操作)setTimeout()
,setInterval()
,事件处理程序等触发)等等,以及在某个时间执行的任何第三方库的异步代码,并且在执行时吞噬了您的16ms(显然,这和上一点有很多重叠)scroll
,resize
等的任何侦听器无关)以上所有内容(不完整的清单)都被认为是您要在10ms或16ms内完成的特定工作的“开销”。
还要注意,某些设备无法在浏览器内或任何地方保持60fps的速度; CPU速度慢,缺少足够的内存或持久存储等,可能会导致all
[也许您正在寻找更具体,不确定的内容-但我想我知道您提到的Paul Lewis(他谈论的是10ms与16.66ms等),我不确定他在谈论什么开销大约-但是,例如,如果您要在以60fps的速度运行的网页上制作一个动画,那么与优化动画效果的特定任务相比,上述所有操作都是“开销”。
希望这会有所帮助!