Tengo miles de cadenas pequeñas que tengo que pasar de un trabajador web a la página principal, cada una es algo como esto:
"this string needs to be sent"¿Cómo podría incluirlo en un búfer de matriz para aumentar la velocidad de transferencia? Entiendo cómo usar números con búferes de matriz, pero ¿cómo se usan cadenas? Estoy buscando algo como esto:
var strings = ["str1","str2","str3",...] for (var i = 0; i < strings.length; i++) { arraybuffer[i] = //Whatever operation works to add strings[i] }Vale la pena medir y comparar el rendimiento de varias técnicas. El trabajador podría usar SharedArrayBuffer si es compatible con sus navegadores de destino (no se ejemplifica a continuación); de lo contrario, los objetos Transferrable se pueden usar con postMessage() . TextEncoder crea ArrayBuffers a partir de cadenas.
Las cadenas individuales se pueden transferir a medida que se codifican:
const encoder = new TextEncoder() strings.forEach(s => { const encoded = encoder.encode(s) postMessage(encoded, [encoded.buffer]) })Una matriz de cadenas podría transferirse en lotes:
const encoded = strings.map(s => encoder.encode(s)) postMessage(encoded, encoded.map(bytes => bytes.buffer))