test_timing/
test_timing.rs1use phasm_core::stego::{armor_decode, ghost_decode};
10use std::time::Instant;
11
12fn main() {
13 let args: Vec<String> = std::env::args().collect();
14 let path = args.get(1).map_or("/tmp/phasm_shared.jpg", |s| s.as_str());
15 let img = std::fs::read(path).unwrap_or_else(|e| {
16 eprintln!("Error reading {path}: {e}");
17 std::process::exit(1);
18 });
19 eprintln!("Image: {} bytes", img.len());
20
21 let start = Instant::now();
22 eprintln!("Trying Armor decode...");
23 match armor_decode(&img, "") {
24 Ok((p, q)) => eprintln!("ARMOR SUCCESS: text='{}' integrity={:.1}% [{:.1}s]", p.text, q.integrity_percent, start.elapsed().as_secs_f64()),
25 Err(e) => eprintln!("ARMOR FAILED: {:?} [{:.1}s]", e, start.elapsed().as_secs_f64()),
26 }
27
28 let start2 = Instant::now();
29 eprintln!("Trying Ghost decode...");
30 match ghost_decode(&img, "") {
31 Ok(p) => eprintln!("GHOST SUCCESS: text='{}' [{:.1}s]", p.text, start2.elapsed().as_secs_f64()),
32 Err(e) => eprintln!("GHOST FAILED: {:?} [{:.1}s]", e, start2.elapsed().as_secs_f64()),
33 }
34}