J'ai besoin de convertir des chaînes de caractères en tableaux typés (et de les reconvertir en chaînes de caractères) dans ES6. Actuellement, cela se fait avec les fonctions suivantes :
function string2array(s) {
return Uint32Array.from(s, (c) => c.codePointAt(0));
}
function array2string(a) {
return String.fromCodePoint(...a);
}
string2array
est deux fois plus lent que array2string
. Je m'attendais à ce que les deux fonctions soient aussi rapides l'une que l'autre. Ma conception de leur fonctionnement est la suivante :
string2array(s):
allocate memory for array of length=s.length
foreach character (or surrogate pair):
get codePoint
push to array
return array
array2string(a):
allocate memory for string of lenght=a.length
foreach item in array
get String.fromCodePoint
push to string
return string
Ils me semblent donc assez comparables.
- Pourquoi string2array est-il plus lent ?
- Existe-t-il un moyen plus rapide pour string2array ?
Voici mon cas d'essai :
function testConversions() {
"use strict";
const data = "