use atlas_archive_core::{Compressor, LoomCompressor, LoomMode, PlcConfig};
#[test]
fn test_regression_paged_vs_standard() {
let mut data = Vec::new();
for i in 0..5000 {
data.extend_from_slice(b"ABCDEFGHIJ");
data.extend_from_slice(&(i as u32).to_be_bytes());
data.push((i % 255) as u8);
}
println!("Data Size: {}", data.len());
let mut std_conf = PlcConfig::default();
std_conf.loom_mode = LoomMode::Standard;
std_conf.max_nodes = 1_000_000; let mut std_comp = LoomCompressor::new(std_conf);
let start_std = std::time::Instant::now();
let res_std = std_comp.compress(&data).unwrap();
let ratio_std = res_std.len() as f64 / data.len() as f64;
println!(
"Standard (Transformer): Ratio {:.6} (Size {}), Time {:?}",
ratio_std,
res_std.len(),
start_std.elapsed()
);
let mut paged_conf = PlcConfig::ultra(); paged_conf.verbose = true;
let mut paged_comp = LoomCompressor::new(paged_conf);
let start_paged = std::time::Instant::now();
let res_paged = paged_comp.compress(&data).unwrap();
let ratio_paged = res_paged.len() as f64 / data.len() as f64;
println!(
"Paged (Ultra): Ratio {:.6} (Size {}), Time {:?}",
ratio_paged,
res_paged.len(),
start_paged.elapsed()
);
println!("Gap: {:.2}x", ratio_paged / ratio_std);
}