syntext 1.1.1

Hybrid code search index for agent workflows
Documentation
#[path = "support/mod.rs"]
mod support;

use criterion::{black_box, criterion_group, criterion_main, Criterion};

use support::{build_index_for_repo, create_synthetic_repo};

fn selectivity_bench(c: &mut Criterion) {
    let repo = create_synthetic_repo(300);
    let (_index_dir, index) = build_index_for_repo(repo.path());
    let opts = syntext::SearchOptions::default();

    let mut group = c.benchmark_group("selectivity");
    group.sample_size(10);

    group.bench_function("literal_no_match", |b| {
        b.iter(|| {
            black_box(
                index
                    .search("xyzzy_no_match_sentinel_42", &opts)
                    .unwrap()
                    .len(),
            );
        });
    });

    group.bench_function("indexed_regex_selective", |b| {
        b.iter(|| {
            black_box(
                index
                    .search("(fn_parse_filter_query)+", &opts)
                    .unwrap()
                    .len(),
            );
        });
    });

    group.bench_function("literal_broad", |b| {
        b.iter(|| {
            black_box(index.search("detect_language", &opts).unwrap().len());
        });
    });

    group.finish();
}

criterion_group!(benches, selectivity_bench);
criterion_main!(benches);