#content-defined #slice #u8 #salt #window #values #chunker

quickcdc

针对u8切片的快速内容定义分块器

1个稳定版本

1.0.0 2018年12月17日

#8 in #content-defined

MIT/Apache

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