dimbin,针对大量数据网络传输设计的序列化方案,用于储存多维数组,通过直接内存操作实现高于 JSON 多个数量级的性能和更小的传输体积。
dimbin 为多维数组而设计, 因此传入的数据结构必须为多维数组, 数组维数没有上限, 每一维度数组的元素个数上线为 2^32 ,维度和数组元素个数受运行环境和设备限制。
数组的元素支持以下数据类型:
默认情况下, 所有的数据将使用 Float32 格式进行保存. 如果需要指定数据格式, 请先转换成 TypedArray. 如需要处理字符串和布尔值, 请使用对应的接口预先转换成 TypedArray。
see ./csharp
npm install --save dimbin import DIMBIN from 'dimbin' // v3 // import DIMBIN from 'dimbin/v2' // old version const data = [ [0, 1, 2, 3], // 普通数值数组 ✅ new Int16Array([1, 2, 3, 4]), // TypedArray ✅ [ // 更高维度数组 ✅ [0, 1, 2], [0, 1, 2, 3, 4], ], DIMBIN.stringsSerialize(['a', 'bc', '']), // Array<string> DIMBIN.booleansSerialize([true, false, true, true]), // Array<boolean> ] // 序列化为ArrayBuffer const bin = DIMBIN.serialize(data) // 反序列化为 Array<TypedArray> const dim = DIMBIN.parse(bin) dim[3] = DIMBIN.stringsParse(dim[3]) dim[4] = DIMBIN.booleansParse(dim[4]) /* [ Float32Array{0, 1, 2, 3}, Int16Array{1, 2, 3, 4}, [ Float32Array{0, 1, 2}, Float32Array{0, 1, 2, 3, 4}, ], ['a', 'bc', ''], [true, false, true, true] ] */