Javascript Webworker 如何将json 信息放入数组缓冲区
Javascript Webworker how to put json information into array buffer
我有数以千计的小字符串需要从网络工作者传回主页,每个字符串都是这样的:
"this string needs to be sent"
我怎样才能将它包含到数组缓冲区中以提高传输速度?我了解如何将数字与数组缓冲区一起使用,但如何使用字符串?我正在寻找这样的东西:
var strings = ["str1","str2","str3",...]
for (var i = 0; i < strings.length; i++) {
arraybuffer[i] = //Whatever operation works to add strings[i]
}
值得衡量和比较各种技术的性能。工作人员可以使用 SharedArrayBuffer if supported in your target browsers (not exemplified below), otherwise Transferrable objects can be used with postMessage()
. TextEncoder 从字符串创建 ArrayBuffers。
单个字符串可以在编码时传输:
const encoder = new TextEncoder()
strings.forEach(s => {
const encoded = encoder.encode(s)
postMessage(encoded, [encoded.buffer])
})
可以批量传输字符串数组:
const encoded = strings.map(s => encoder.encode(s))
postMessage(encoded, encoded.map(bytes => bytes.buffer))
我有数以千计的小字符串需要从网络工作者传回主页,每个字符串都是这样的:
"this string needs to be sent"
我怎样才能将它包含到数组缓冲区中以提高传输速度?我了解如何将数字与数组缓冲区一起使用,但如何使用字符串?我正在寻找这样的东西:
var strings = ["str1","str2","str3",...]
for (var i = 0; i < strings.length; i++) {
arraybuffer[i] = //Whatever operation works to add strings[i]
}
值得衡量和比较各种技术的性能。工作人员可以使用 SharedArrayBuffer if supported in your target browsers (not exemplified below), otherwise Transferrable objects can be used with postMessage()
. TextEncoder 从字符串创建 ArrayBuffers。
单个字符串可以在编码时传输:
const encoder = new TextEncoder()
strings.forEach(s => {
const encoded = encoder.encode(s)
postMessage(encoded, [encoded.buffer])
})
可以批量传输字符串数组:
const encoded = strings.map(s => encoder.encode(s))
postMessage(encoded, encoded.map(bytes => bytes.buffer))