openpql-range-parser 0.1.0

Poker Range Notation Parser
Documentation
use std::hint::black_box;

use criterion::{Criterion, criterion_group, criterion_main};
use openpql_prelude::HandN;
use openpql_range_parser::RangeChecker;

fn run(s: &str) -> usize {
    const SD: bool = false;
    let mut count = 0;
    let checker = RangeChecker::<4, SD>::from_src(s).unwrap();
    for cards in HandN::<4>::iter_all::<SD>() {
        if checker.is_satisfied(cards.as_slice()) {
            count += 1;
        }
    }
    count
}

fn criterion_benchmark(c: &mut Criterion) {
    let mut group = c.benchmark_group("range 4");

    group.bench_function("A[K,T][43-]", |b| {
        b.iter(|| run(black_box("A[K,T][43-]")));
    });

    group.bench_function("ABTsw", |b| {
        b.iter(|| run(black_box("ABTsw")));
    });

    group.bench_function("AsKsQsB", |b| {
        b.iter(|| run(black_box("AsKsQsB")));
    });

    group.bench_function("****", |b| {
        b.iter(|| run(black_box("****")));
    });
}

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