Quiero obtener una representación Uint8Array de la cadena. ¿Es mejor preasignarlo una vez y reutilizarlo o crear uno nuevo según la codificación?
function stringToUtf8ByteArray(str) { return new TextEncoder("utf-8").encode(str) } var TE = new TextEncoder("utf-8") function stringToUtf8ByteArray(str) { return TE.encode(str) }Supongo que no habrá condiciones de carrera, porque js es algo de un solo subproceso, ¿no?
El TextEncoder no contiene nada que haga que su creación sea costosa, por lo que el beneficio de reutilizar una instancia sería muy pequeño. La llamada al método de encode está haciendo el trabajo pesado, por lo que normalmente no sería una preocupación crear el TextEncoder cada vez.
Tiene razón en que no habría condiciones de carrera si tuviera que preasignar la instancia.
Si realmente necesita recortar el rendimiento del código, debe buscar en el método encodeInto , que coloca el resultado en una matriz que usted proporciona. Reutilizar esa matriz podría hacer más por el rendimiento que reutilizar la instancia de TextEncoder .
El método encodeInto actualmente no es compatible con Opera, por lo que probablemente necesitará el polyfill que se proporciona en la página a la que me vinculé.