Skip to main content

optimize_fastcover_dict

Function optimize_fastcover_dict 

Source
pub fn optimize_fastcover_dict(
    samples: &[u8],
    sample_sizes: &[usize],
    dict_size: usize,
    options: &FastCoverOptions,
    finalize: FinalizeOptions,
) -> Result<(Vec<u8>, FastCoverOptions)>
Available on crate feature dict-builder only.
Expand description

Train FastCOVER dictionaries over a range of k and d and keep the one the scoring samples compress best with (the reference’s ZDICT_optimizeTrainFromBuffer_fastCover, which zstd --train and ZDICT_trainFromBuffer run). Returns it with the options that built it.

The search is optimize_cover_dict’s; a non-positive split_point is 0.75 here.

§Errors

As optimize_cover_dict and train_fastcover_dict.

§Examples

use structured_zstd::dictionary::{FastCoverOptions, FinalizeOptions, optimize_fastcover_dict};

let mut samples = Vec::new();
let mut sizes = Vec::new();
for i in 0..200u32 {
    let line = format!("tenant=demo table=orders key={i} region=eu status=shipped\n");
    sizes.push(line.len());
    samples.extend_from_slice(line.as_bytes());
}
let (dict, chosen) = optimize_fastcover_dict(
    &samples,
    &sizes,
    4096,
    &FastCoverOptions::default(),
    FinalizeOptions::default(),
)
.unwrap();
assert!(dict.len() <= 4096 && chosen.cover.d == 8);