海量数据高性能序列化方案 dimbin

MIT
C# JavaScript TypeScript
跨平台
阿里巴巴
2019-07-26
afterer

dimbin,针对大量数据网络传输设计的序列化方案,用于储存多维数组,通过直接内存操作实现高于 JSON 多个数量级的性能和更小的传输体积。

dimbin 为多维数组而设计, 因此传入的数据结构必须为多维数组, 数组维数没有上限, 每一维度数组的元素个数上线为 2^32 ,维度和数组元素个数受运行环境和设备限制。

数组的元素支持以下数据类型:

  • number: Int8, UInt8, Int16, UInt16, Int32, UInt32, Float32, Float64
  • string
  • boolean

默认情况下, 所有的数据将使用 Float32 格式进行保存. 如果需要指定数据格式, 请先转换成 TypedArray. 如需要处理字符串和布尔值, 请使用对应的接口预先转换成 TypedArray。

使用方法

C#

see ./csharp

Javascript

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]
]
*/

 

 

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

序列化方案选型对比 - JSON/ProtocolBuffer/FlatBuffer/DIMBIN

4千字长文预警!! 背景 JSON/XML不好吗? 好,再没有一种序列化方案能像JSON和XML一样流行,自由、方便,拥有强大的表达力和跨平台能力。是通用数据传输格式的默认首选。不过随着数据量的增...

07/05 16:09
10
0
序列化方案选型对比 - JSON/ProtocolBuffer/FlatBuffer/DIMBIN

4千字长文预警!! 背景 JSON/XML不好吗? 好,再没有一种序列化方案能像JSON和XML一样流行,自由、方便,拥有强大的表达力和跨平台能力。是通用数据传输格式的默认首选。不过随着数据量的增...

07/05 15:33
12
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部