我将在Javascript中存储大量字节值(最有可能超过一百万) . 如果我使用具有正常数字的普通数组,则需要8 MB,因为数字存储为IEEE双精度数,但如果我可以将其存储为字节数,则它将仅为1 MB .
我想避免因为明显的原因而浪费那么多空间 . 有没有办法将字节存储为字节而不是双精度?浏览器兼容性对我来说不是问题,只要它适用于Chrome . 这是在HTML5中,如果这有所不同 .
通过使用typed arrays,您可以存储these types的数组:
Int8
Uint8
Int16
Uint16
Int32
Uint32
Float32
Float64
例如:
var array = new Uint8Array(100); array[42] = 10; alert(array[42]);
看到它在行动here .
var array = new Uint8Array(100); array[10] = 256; array[10] === 0 // true
我在firefox和chrome中验证过,它实际上是一个字节数组:
var array = new Uint8Array(1024*1024*50); // allocates 50MBytes
您可以将数据存储在一些大的固定大小的字符串数组中 . 访问该字符串数组中的任何特定字符并将该字符视为字节应该是高效的 .
看到你想要支持的操作(可能表达为接口)会使问题更具体,这将是很有趣的 .
3 回答
通过使用typed arrays,您可以存储these types的数组:
Int8
Uint8
Int16
Uint16
Int32
Uint32
Float32
Float64
例如:
看到它在行动here .
我在firefox和chrome中验证过,它实际上是一个字节数组:
您可以将数据存储在一些大的固定大小的字符串数组中 . 访问该字符串数组中的任何特定字符并将该字符视为字节应该是高效的 .
看到你想要支持的操作(可能表达为接口)会使问题更具体,这将是很有趣的 .