我正在使用画布的JavaScript应用程序中测试性能。我遇到的一个问题是FPS的主要波动:以毫秒为单位从60变为2。

javascript - 我应该使用requestanimationframe还是setTimeout?-LMLPHP

如您所见,这里有很多峰值。这不是由于绘画,脚本,渲染或加载。我认为这是因为requestAnimationFrame没有分配固定的FPS速率,它可能太灵活了吗?我应该使用setTimeout吗?在这种情况下,它通常会更可靠吗,因为它会迫使应用程序仅以一种FPS速率运行?

最佳答案

性能始终与细节有关。在您的应用程序上没有更多信息(例如,呈现您应用程序的特定代码)。很难说应该如何构造代码。

通常,您应该始终使用requestAnimationFrame。特别是用于渲染。

(可选)存储增量时间,并将您的动画属性乘以该增量。当帧频不一致时,将创建平滑的动画。

我还发现随机帧频变化通常与垃圾回收有关。也许进行一些内存分析,以查找是否可以避免每帧重新创建对象的地方。

requestAnimationFrame在几乎所有方面都优于setTimeout。它不会作为背景标签运行。节省电池。它为浏览器提供了有关您正在开发的应用程序类型的更多信息,这使给定的浏览器可以做出许多安全的性能提升假设。

我强烈建议您观看的演讲。

关于javascript - 我应该使用requestanimationframe还是setTimeout?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32535424/

10-16 14:15