Javascript setTimeout性能与手动检查
Javascript setTimeout performance vs manual check
我正在编写一个WebGL游戏,我很好奇通过检查是否应该在每次更新requestAnimationFrame
时(使用Date.now()
)或通过设置超时(使用setTimeout()
)来实现我的游戏事件,在性能方面是否会更好。
请注意,这些事件通常间隔约100毫秒。
我主要担心的是setTimeout
在空闲时不会浪费CPU(等待下一个事件),如果我在每次更新时都进行检查,那么我将进行如果我使用setTimeout 时不会发生的计算
如果需要事件,请创建事件并使用eventListeners。
如果您需要在每次调用rAF时检查某个条件是否已更改以执行某些操作,只需在rAF循环中进行检查即可。
注意:您不需要并且应避免在每次调用时创建新的日期对象;有一个TimeStamp通过rAF作为请求函数的唯一参数传递,请使用它。
function update(timestamp){...};
requestAnimationFrame(update);
高速使用setTimeout只会对timedout函数进行无用的调用,该函数将被推送到要执行的任务堆栈的顶部。
在rAF循环的顶部嵌入检查也同样好。
我认为正确的做法是使用requestAnimationFrame。
如果您已经处于requestAnimationFrame中,我认为最好检查当前时间和任何挂起的事件,并尽可能地进行任何工作。
setTimeout
需要一个非常像上下文切换的东西,这是一个不必要的开销,当然,如果事件导致更新屏幕,你要么必须"现在"进行更新,要么安排在下一个requestAnimationFrame中进行更新,这两种都是不必要的复杂性。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- setInteval vs setTimeout
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何使用setTimeout每隔10毫秒检查xmlhttp.readyState
- 使用setTimeout()检查JSON文件中的更改
- Javascript setTimeout性能与手动检查
- settimeout正在阻塞事件循环Nodejs检查下一个示例:
- setTimeout设置为addClass,然后检查元素是否为hasClass
- 如果使用setTimeout更改,检查表