【发布时间】:2015-05-29 06:40:19
【问题描述】:
使用 Javascript,在使用更新函数的应用程序中运行每个渲染帧并寻求每分钟的优化:
如果想要经常运行代码并且时间的精度并不重要,那么在使用setTimeout 循环还是在应用程序的更新函数中构建一个计时器之间是明智的选择吗?
例如,setTimeout 是否有一些意想不到的计算成本,使其明显变慢?或者,另一方面,setTimeout 是否会对应用程序产生积极影响,因为 Javascript 并不急于使 setTimeout 回调发生?
【问题讨论】:
-
只有一个线程,所以使用
while (true)循环是一个非常糟糕的主意。另一方面,setTimeout只会在线程准备好后立即执行回调——这可能是从您设置为setTimeout的确切时间到从不执行的任何时间(如果您的应用程序中有while (true)循环: ))。 -
没有
while(true),但是有一个整体更新循环,它被尽可能频繁地调用而不会被太频繁地调用;游戏中常见。所以我想问题是是检查循环中我已经需要运行的时间还是单独使用setTimeout -
试试这个 - playmycode.com/blog/2011/08/…。它有点旧,但仍然适用。
setInterval是比setTimeout更好的选择,如果浏览器支持window.requestAnimationFrame,那就更好了。或isaacsukin.com/news/2015/01/…。或者只是谷歌“实时javascript游戏循环”。 -
抱歉,我不清楚;我正在构建的实际应用程序在其开发中已经相当成熟。目前,我有一个使用
requestAnimationFrame运行更新功能的HTML5 应用程序。我正在寻找的是一些晦涩难懂的(也许是未知的)知识——在非常低的水平上——在检查更新循环中的时间差或使用单独的 setTimeout/setInterval 循环之间更快。
标签: javascript performance time