使用网络工作者进行分类

问题描述 投票:0回答:1

因此,我有一个应用程序需要将其数据JSON.stringify放入localStorage,但是随着数据量的增加,此操作的成本变得异常昂贵。

因此,我尝试将其移动到webWorker上,使其脱离主线程,但是我现在正在学习将对象发布到webWorker上比将其字符串化甚至更昂贵。

所以我想我想问的是,有什么办法可以使JSON.stringify脱离主线程,或者至少使其更便宜?

我熟悉fast-json-stringify,但我认为每次都无法提供完整的架构...

javascript json reactjs web-worker
1个回答
1
投票

您已经正确地观察到将对象传递给Web Worker的成本与对其进行序列化一样多。这是因为Web工作人员还需要接收序列化的数据,而不是本机JS对象,因为实例对象绑定到在其上创建的JS线程。

通用解决方案适用于许多编程问题:使用大型数据集时选择正确的数据结构。当数据变大时,最好牺牲简单的访问性能。因此,请执行以下任何操作:

在indexedDB中存储数据

如果大对象包含相同条目的列表,请使用索引数据库进行读写,而您完全不必担心序列化。这将需要重构代码,但这对于大型数据集是正确的解决方案。

将数据存储在ArrayBuffer中

如果您的数据大多是固定大小的值,请使用ArrayBuffer。 ArrayBuffer可以立即复制或移动到Web Worker,并且如果您输入的条目大小相同,则可以并行进行序列化。为了进行访问,您可以编写简单的包装器类,将您的二进制数据转换为更易读的内容。

© www.soinside.com 2019 - 2024. All rights reserved.