【问题标题】:Why do HTML5 Web Workers have a high startup latency?为什么 HTML5 Web Workers 启动延迟高?
【发布时间】:2017-07-05 08:11:49
【问题描述】:

根据 Mozilla 工程师的一篇文章,Web Workers 启动大约需要 40 毫秒(延迟)。

Web Workers 有多快? https://hacks.mozilla.org/2015/07/how-fast-are-web-workers/

Web Worker 需要大约 40 毫秒来实例化。还有,这次是 非常稳定,变化只有几毫秒。

在 JSFiddle 测试中,我注意到启动延迟在 15 毫秒到 70 毫秒之间变化。延迟似乎在约 40 毫秒左右不稳定。 Chrome 似乎更快(6 毫秒到 25 毫秒)。

var workerCode = URL.createObjectURL(blob); // no download latency
var worker = new Worker(workerCode);

https://jsfiddle.net/pvr5xroh/1/

为什么 Web Worker 的启动延迟如此之高?

【问题讨论】:

  • 该链接不是文档,它是一篇关于 Firefox OS 在 2015 年如何工作的文章。
  • 我引用它作为 Mozilla 工程师的一篇文章,他以专家的身份探索了 Web Workers 的速度。启动延迟似乎适用于 2017 年的浏览器。
  • 我从您的问题中理解了其他情况(“延迟似乎在约 40 毫秒左右不稳定”)。无论如何,我的意思只是这可能不是规范强加的故意延迟,无论如何,Firefox OS 不再是我们中间:_(
  • 您在参考方面是正确的,但是延迟适用于所有浏览器/平台,我只是搜索了相应的文章。由于这种延迟,目前 Web Worker 的使用受到前端优化的严格限制。

标签: javascript html performance web-worker front-end-optimization


【解决方案1】:

当您像这样加载网络工作者时:

worker = new Worker('path/to/js');

浏览器需要先下载'path/to/js'。请记住,JS是从后端下载并在前端执行的。

【讨论】:

  • 此答案不适用于该问题。测试中的工作代码通过 URL.createObjectURL 加载,因此没有下载延迟。 jsfiddle.net/pvr5xroh/1我已经修改了示例代码,使其更加明显。
  • 网络工作者创建一个新线程,也许只是浏览器创建它的持续时间...如果浏览器或 CPU 繁忙,延迟可能会发生变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多