[英]Converting Javascript 2d arrays to ArrayBuffer
我正在尝试使用Web Workers处理大量数据,并且在将数据传递回主线程进行显示时,我想使用可转移对象来减少对UI线程的影响。
该过程当前导致一个多维数组,该数组也可以包含对象。 例如:
[{foo: [{bar: "Alice",
car: 23,
dab: [2, 3, 5]}],
faa: [{moo: {a: [2,3], b: [4,5]} },
{moo: {a: [6,7], b: [8,9]} }]},
{foo: [{bar: "John",
car: 33,
dab: [6, 7, 1]}],
faa: [{moo: {a: [5,5], b: [9,2]} },
{moo: {a: [7,7], b: [4,2]} }]},
...]
我已经看过此字符串转换文章,但是再次,我看不到如何直接将其应用于我的数组结构: 在字符串和ArrayBuffers之间进行转换
感谢帮助!
很多人在理解这一点上有困难。 因此,让我给您一个有关您的选择及其作用的图片:
postMessage
var object = { ... };
worker.postMessage(object);
object
复制到结构化克隆 请注意, 创建和解析结构化克隆是通过优化的本机代码完成的。
var object = { ... };
var binary = CreateTypedArrayFromObject(object);
worker.postMessage(binary.buffer, [binary.buffer]);
object
转换为TypedArray
TypedArray
的ArrayBuffer
TypedArray
[Worker] ArrayBuffer
我要指出的是,您想避免复制,但是您仍在复制,只是这次不是本机而是javascript。 如果要优化,则必须设计数据结构,以使其在类型数组上运行。 如果没有,甚至不要尝试使用它们-您只会在代码中添加额外的开销。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.