2 个版本
0.1.1 | 2023年5月22日 |
---|---|
0.1.0 | 2023年5月22日 |
#407 在 压缩
89 每月下载次数
34KB
543 代码行
Rust 流 VByte 编码/解码器
此库提供了 Stream VByte 编码的编码/解码原语。
Stream VByte 编码是一种 SIMD 加速的 VarInt 解压缩算法。它被用于搜索和数据库系统中,作为从磁盘或主内存中高效存储和流式传输大量 VarInt 的方法。
基准测试结果
CPU | 基本频率 (GHz) | 超频频率 (GHz) | 结果 (GElem/s) |
---|---|---|---|
Xeon E3-1245 v5 | 3.5 | 3.9 | 5.0 |
Core i7-1068NG7 | 2.3 | 4.1 | 5.5 |
VarInt 的理念不是存储数字的前导零字节。这样,大量的相对较小的数字可以以更紧凑的方式存储。如果数字按升序存储,VarInt 编码通常与 delta 编码一起使用。这样,所有数字的大小都减小,因此压缩效果更好。
Stream VByte 使用两个数据流:控制流和数据流。控制流包含控制字(每个1字节)。每个控制字描述数据流中4个数字的长度(每个数字2位,00
- 长度1,01
- 长度2,以此类推)。
链接
- Stream VByte: Faster Byte-Oriented Integer Compression by Daniel Lemire and Leonid Boytsov。
- Stream VByte: breaking new speed records for integer compression by Daniel Lemire
- Compress-a-Palooza: Unpacking 5 Billion Varints in only 4 Billion CPU Cycles