首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript web工作者多线程字符串搜索速度比单线程慢吗?

javascript web工作者多线程字符串搜索速度比单线程慢吗?
EN

Stack Overflow用户
提问于 2017-08-17 06:56:49
回答 1查看 447关注 0票数 1

我有一个模糊搜索功能。我有52k个单词的列表。我在对每个单词运行这个函数。大约需要30米的时间才能完成。

我尝试通过使用myWorker.postMessage({targets:slice, search})将列表的1/8发送给每个工作人员(我的cpu上有8个线程),将其分成8个worker线程。但这要慢得多,大约100毫秒。

我的问题是:是否有可能使多线程在这里变得更快?或者仅仅是太多的数据拷贝到不到30 is的线程中就可以完成?是否有可能不复制内存并拥有某种共享内存?

(仅仅将数据发送给工作人员似乎比我在一个线程中搜索所有数据的速度要慢!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-17 07:24:10

是否有可能不复制内存并拥有某种共享内存?

您可以使用Worker.postMessage()的第二个参数从Worker线程到主线程,或者从主线程到工作线程,对创建的对象进行转移

代码语言:javascript
复制
// transfer data to `Worker` instance
worker.postMessage(data.buffer, [data.buffer]) // where `data` is an `ArrayBuffer`

代码语言:javascript
复制
// transfer data from `Worker` instance
self.postMessage(data.buffer, [data.buffer]) // where `data` is an `ArrayBuffer` 

通过转让所有权传递数据(可转让的对象) Google 17+和火狐18+包含了一种将特定类型的对象(可传输对象,即实现可转让接口的对象)传递给或从高性能工作者那里传递的额外方法。可传输对象通过零拷贝操作从一个上下文传输到另一个上下文,这在发送大数据集时带来了巨大的性能改进。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45728454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档