gpt4 book ai didi

javascript - Webworker 数据传输允许的格式

转载 作者:太空宇宙 更新时间:2023-11-04 16:11:02 25 4
gpt4 key购买 nike

我一直在研究如何与网络 worker 之间传输数据,我发现的每个示例都显示以下格式:

var myData = new Uint8ClampedArray(256);
postMessage(myData.buffer, [ myData.buffer ]);

但是我希望能够发送额外的数据。所以,我的问题是以下内容是否也转移 myData 缓冲区的所有权,或者只是复制?

var myData = new Uint8ClampedArray(256);
postMessage({ foo: 'bar', data: myData }, [ myData.buffer ]);

最佳答案

几个月后我才回到这个问题,并决定运行一个基准测试。不幸的是,我不知道如何在 jsperf 上正确执行此操作,所以我继续输入 this gist一起。使用 1 MB Uint8ClampedArray 超过 10000 个往返循环,我的结果如下:

worker.postMessage(data, [ data.buffer ]);
// => 1112ms

worker.postMessage({ foo: 'bar', data: data }, [ data.buffer ]);
// => 1220ms

worker.postMessage(data);
// => 11862ms

worker.postMessage({ foo: 'bar', data: data });
// => 12244ms

结果基本上符合我的预期,但很高兴得到确认。在对象中添加额外数据似乎确实会产生一些开销(~10%),但数组缓冲区所有权已正确转移。

关于javascript - Webworker 数据传输允许的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41497124/

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