setInterval在Safari上运行缓慢

时间:2013-05-16 04:31:01

标签: javascript safari setinterval timing

我正在研究基于HTML5画布的游戏,并且在Safari(在Windows上)遇到了一些问题。

游戏在Firefox和Chrome中运行得很好,甚至是IE,但在Safari上一切都很慢。

主游戏循环是通过使用setInterval调用方法(更新)来触发的,时间为50ms(20Hz)。

我设置了一些控制台计时器来检查更新运行了多长时间,认为它可能超过50毫秒并导致问题,但通常只需要6到20毫秒,所以有足够的空间。

然后我尝试了一个简单的计数器来查看更新被击中的次数,并将其计时10秒。在那个时候它应该执行200次,但只执行大约60次!哎呀!难怪它的运行速度应该是它的1/3。

然后我清空了更新方法,只保留了控制台计数,然后再次运行它。这个时间在10秒内它应该运行大约200次。

还有其他人有这个问题吗?是否有某种解决方法,或者可能只是我做错了什么?

更新:

我有机会在Mac上的Safari上测试它并且运行得非常漂亮。在Windows版本的Safari上,似乎只是一个糟糕的setInterval实现。

我找到了这个有趣的演示,它显示了setInterval的滞后... http://www.goat1000.com/2011/03/23/how-accurate-is-window.setinterval.html

这是一个非常简单的例子,它具有非常基本的计算需求,但即使如此,在Windows Safari中显示延迟并不需要很长时间。你可以想象复杂的图形游戏会有多糟糕。

0 个答案:

没有答案