1个稳定版本
1.0.0 | 2018年12月17日 |
---|
#8 in #content-defined
10KB
114 行
quickcdc
摘要
quickcdc
是一个针对 &[u8]
切片的快速内容定义分块器。
- 有关背景信息,请参阅 Yucheng Zhang 的论文 AE: An Asymmetric Extremum Content Defined Chunking Algorithm。
- 修改
- 用户可以提供盐值,引入熵/切点变化(即使用不同盐值重新处理的文件将产生不同的切点)。
- 前向卷绕(减小窗口大小),跳过在达到最小块大小之前发生的某些不必要的处理。
这应该比许多CDC算法更快(轶事性能:在amd1950x和NVMe驱动器上为2GB/s),但存在更快的替代方案。
- 有关更多信息,请参阅 FastCDC
注意:此实现使用 --release
构建时速度更快。
示例
use quickcdc;
use rand::Rng;
let mut rng = rand::thread_rng();
let mut sample = [0u8; 1024];
rng.fill(&mut sample[..]);
let target_size = 64;
let max_chunksize = 128;
let salt = 15222894464462204665;
let chunker = quickcdc::Chunker::with_params(&sample[..], target_size, max_chunksize, salt).unwrap();
for x in chunker {
println!("{}", x.len());
}
依赖项
~550–780KB
~10K SLoC