Je vais stocker un grand nombre de valeurs d'octets (probablement plus d'un million) en Javascript. Si j'utilise un tableau normal avec des nombres normaux, cela prendra 8 Mo, car les nombres sont stockés sous forme de doublons IEEE, mais si je peux le stocker sous forme d'octets, ce ne sera que 1 Mo.
J'aimerais éviter de gaspiller autant d'espace pour des raisons évidentes. Est-il possible de stocker des octets sous forme d'octets au lieu de doubler? La compatibilité du navigateur n’est pas un problème pour moi, tant que cela fonctionne dans Chrome. Ceci est en HTML5, si cela fait une différence.
En utilisant tableaux typés , vous pouvez stocker des tableaux de ces types :
Par exemple:
var array = new Uint8Array(100);
array[42] = 10;
alert(array[42]);
Voir en action ici .
var array = new Uint8Array(100);
array[10] = 256;
array[10] === 0 // true
J'ai vérifié dans Firefox et Chrome, c'est vraiment un tableau d'octets:
var array = new Uint8Array(1024*1024*50); // allocates 50MBytes
Vous pouvez stocker les données dans un tableau de chaînes de grande taille fixe. Il devrait être efficace d’accéder à un caractère particulier de ce tableau de chaînes et de le traiter comme un octet.
Il serait intéressant de voir les opérations que vous souhaitez soutenir, peut-être exprimées sous forme d'interface, pour rendre la question plus concrète.