javascript - Web Workers - JSON 的可传输对象

在大型 JSON 对象上使用 worker.postMessage 时,HTML 5 Web worker 非常慢。 我试图弄清楚如何将 JSON 对象传输到网络 worker - 使用 Chrome 中的“可传输对象”类型,以提高速度。

这就是我所指的,看起来它应该会加快速度: http://updates.html5rocks.com/2011/12/Transferable-Objects-Lightning-Fast

我很难找到一个很好的例子(而且我不相信我想使用 ArrayBuffer)。任何帮助将不胜感激。

我在想象这样的事情:

worker = new Worker('workers.js');

var large_json = {};
for(var i = 0; i < 20000; ++i){
   large_json[i] = i;
   large_json["test" + i] = "string";
};

//How to make this call to use Transfer Objects? Takes approx 2 seconds to serialize this for me currently.
worker.webkitPostMessage(large_json);

最佳答案

如果您必须从现有的 Json 数组从头开始构建它,那么使用可转移对象将无济于事(这非常接近克隆......)

Json 数据从何而来?保持工作线程上所有繁重工作的一种可能方法是让它使用 XmlHttpRequest 获取数据,对其进行转换并将其发送到 UI 线程。这样,高昂的克隆成本发生在工作线程上,虽然它需要与 UI 线程中相同的时间,但不会阻塞您的应用。

https://stackoverflow.com/questions/11365894/

相关文章:

c# - JSON.NET JObject 键比较不区分大小写

ios - NSURLRequest 中不支持的 URL

php - 使用 ajax 将 JSON 发送到 PHP

c# - 无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型

ruby-on-rails - 在Rails中将所有 Controller 参数从camelCase

javascript - 将 JSON 数据导入 Google 表格

asp.net - jqgrid 与 asp.net webmethod 和 json 一起使用排序

java - 如何在返回对象的 Spring MVC @RestController @Respon

ruby-on-rails - 在rails中将JSON字符串转换为JSON数组?

jquery - 使用 jQuery 和 JSON 填充表单?