15个不稳定版本 (3个重大更改)
0.3.1 | 2024年7月6日 |
---|---|
0.2.5 | 2024年5月6日 |
0.2.2 | 2024年3月22日 |
0.1.2 | 2023年12月15日 |
0.0.0-alpha.0 | 2023年7月7日 |
#45 在 压缩
1,027 每月下载次数
用于 6 个crate (5个直接)
295KB
7.5K SLoC
Pco (Pcodec) 以高压缩比和适中的速度无损压缩和解压缩数值序列。
快速入门
use pco::standalone::{simpler_compress, simple_decompress};
use pco::DEFAULT_COMPRESSION_LEVEL;
use pco::errors::PcoResult;
fn main() -> PcoResult<()> {
// your data
let mut my_nums = Vec::new();
for i in 0..100000 {
my_nums.push(i as i64);
}
// compress
let compressed: Vec<u8> = simpler_compress(&my_nums, DEFAULT_COMPRESSION_LEVEL)?;
println!("compressed down to {} bytes", compressed.len());
// decompress
let recovered = simple_decompress::<i64>(&compressed)?;
println!("got back {} ints from {} to {}", recovered.len(), recovered[0], recovered.last().unwrap());
Ok(())
}
编译注意事项
为了在x86_64上获得最佳性能,请使用您的硬件支持的任何 bmi*
和 avx*
指令集进行编译。 几乎所有当前的x86硬件都支持 bmi1
、bmi2
和 avx2
。这可以略微提高压缩速度,并显著提高解压缩速度!要确保您正在使用这些,您可以
- 将以下内容添加到您的
~/.cargo/config.toml
[target.'cfg(target_arch = "x86_64")']
rustflags = ["-C", "target-feature=+bmi1,+bmi2,+avx2"]
- 或者使用
RUSTFLAGS="-C target-feature=+bmi1,+bmi2,+avx2" cargo build --release ...
请注意,设置 target-cpu=native
并不总是产生相同的效果,因为LLVM为广泛的CPU族编译指令的最低公共基数。
依赖项
~375KB