use criterion::{Criterion, criterion_group, criterion_main}; use std::hint::black_box; fn bench_compress_git_status(c: &mut Criterion) { let output = "On branch main\nYour branch is up to date with 'origin/main'.\n\nChanges not staged for commit:\n modified: src/main.rs\n modified: src/lib.rs\n\nno changes added to commit"; c.bench_function("compress_git_status", |b| { b.iter(|| { lean_ctx::core::patterns::compress_output(black_box("git status"), black_box(output)) }); }); } fn bench_compress_cargo_build(c: &mut Criterion) { let output = " Compiling lean-ctx v3.4.3\n Compiling serde v1.0.200\n Compiling tokio v1.38.0\n Compiling anyhow v1.0.86\n Finished `release` profile in 45.2s"; c.bench_function("compress_cargo_build", |b| { b.iter(|| { lean_ctx::core::patterns::compress_output(black_box("cargo build"), black_box(output)) }); }); } fn bench_token_count(c: &mut Criterion) { let text = "fn main() {\n println!(\"Hello, world!\");\n}\n".repeat(100); c.bench_function("token_count_4k", |b| { b.iter(|| lean_ctx::core::tokens::count_tokens(black_box(&text))); }); } criterion_group!( benches, bench_compress_git_status, bench_compress_cargo_build, bench_token_count ); criterion_main!(benches);