7 个不稳定版本
0.4.1 | 2023年5月23日 |
---|---|
0.4.0 | 2021年11月27日 |
0.3.2 | 2017年10月12日 |
0.2.0 | 2017年10月4日 |
0.1.0 | 2017年9月30日 |
#60 in 压缩
8,924 每月下载量
用于 granne
155KB
2K SLoC
将 Stream VByte 移植到 Rust 的库。
Stream VByte 是一种变长无符号整数编码,旨在提高 SIMD 处理的效率。
有关格式的详细信息,请参阅 https://lemire.me/blog/2017/09/27/stream-vbyte-breaking-new-speed-records-for-integer-compression/ 和 https://arxiv.org/pdf/1709.08990.pdf。参考 C 实现为 https://github.com/lemire/streamvbyte。
用法
请参阅文档。
使用 CLI 示例进行尝试
提供了一个 cli.rs
示例,演示了编码和解码。
要编码一些数字,请将数字(每行一个)提供给 stdin,编码结果将被写入 stdout。
使用 jot
生成数字 1
到 100
的示例:jot 100 | cargo run --example cli -- enc | base64
输出,已移除 cargo build 输出("Encoded ..." 在 stderr 上,便于人类阅读)
Encoded 100 numbers
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8g
ISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZ
WltcXV5fYGFiY2Q=
存在相应的解码模式,它从 stdin 读取编码格式并输出内容,每行一个数字。在这里,我们先编码一些数字,然后再解码它们:jot 10 | cargo run --example cli -- enc | cargo run --example cli -- dec -c 10
Encoded 10 numbers
1
2
3
4
5
6
7
8
9
10
Decoded 10 numbers
维护者
生成查找表
cargo run --example generate_decode_table > tmp/tables.rs && mv tmp/tables.rs src/tables.rs
运行测试(在最近的 Intel 处理器上)
RUSTFLAGS='-C target-feature=+ssse3,+sse4.1' cargo +nightly test --all-features
运行基准测试
RUSTFLAGS='-C target-feature=+ssse3,+sse4.1' cargo +nightly bench --all-features