Skip to content

Worker异步计算 ​

一、概述 ​

在小游戏每一帧中,JS 主线程主要做了两件事情:计算和渲染。相对地,每一帧的 Frame Time = 计算耗时 + 渲染耗时。根据 Chrome 团队提出的用户感知性能模型 RAIL,播放动画时 JS 执行时间(即计算耗时)要小于 16ms,且应该尽量低于 10ms,以留足额外的 6ms 用以渲染。因此,对于小游戏而言,每一帧的 16ms 十分重要。

然而,在小游戏中,一些复杂的计算(比如物理引擎模拟)所消耗的时间很难保证会低于10ms,这时往往会造成游戏帧率下降,并出现卡顿的情况。尤其是 iOS 的 JavaScriptCore 无法开启 JIT,可能造成 iOS 上小游戏的性能表现很差。

所以 Runtime 提供 Worker 异步计算能力,把复杂的计算丢给 Woker 计算,可以提升十几倍的运行效率。

二、效果 ​

  • 主线程计算耗时大量减少

  • 主线程渲染有充足时间

  • 帧率稳定

  • 复杂物理场景不再卡顿