gpt4 book ai didi

javascript - Canvas 数据到网络 worker

转载 作者:可可西里 更新时间:2023-11-01 13:14:09 26 4
gpt4 key购买 nike

我正在尝试使用 webworker 对来自 Canvas 的图像数据进行一些处理。解决方案,我知道,工作得很好,但在我进行处理时仍然有一些明显的滞后(因为除了处理之外,我还必须将视频从网络摄像头绘制到 Canvas 上,它开始滞后)。

所以我尝试使用 webworker 并异步执行所有操作。唯一的问题是当我使用 JSON.stringify 时,它比实际处理时间更长。

我的问题:有没有其他方法,如何通过 worker.postMessage 快速传递大量数据?是否有某种我不知道的解决方法?

小子问题:网络 worker 有什么用?我发现 worker 真的没用,只传递字符串。

编辑:

可能重复:Pass large amounts of data between web worker and main thread

最佳答案

一切都被复制到网络 worker ,所以除非你的计算非常密集,否则我怀疑你会在那里看到很多收获。

WebWorker 适用于长时间运行的计算密集型算法。明显的用例是:

  • 网页游戏中的人工智能
  • 光线追踪器
  • 大型数据集的压缩/解压
  • 在显示之前需要大量处理的 AJAX 请求
  • 其他复杂算法

由于数据是双向复制的,因此您必须谨慎行事。 WebWorker 无权访问 DOM,因此它们可能对您尝试执行的操作毫无用处。我不知道你的应用程序是做什么的,但听起来不是很激烈。

还有Sharedworkers,可以被多个tabs/windows共享,这是一个非常好的tabs间数据传递方式。

编辑:

另请查看 structured clone algorithm .在很多方面它似乎比 JSON 更有效,甚至可以复制 ImageData(因此它不再仅支持字符串)。

对于不支持克隆算法的浏览器,我建议你考虑base64。它在存储二进制数据方面表现不错,而且我认为它比 JSON.stringify 更快。不过,您可能必须编写一些代码来处理它。

关于javascript - Canvas 数据到网络 worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com