A randomized benchmark for pattern scanners. Also good at finding bugs.
cmake -S . -B build
cmake --build build --config ReleaseUse --loglevel 1 for progress reporting.
Random synthetic data (default behavior):
out\Release\bin\pattern-bench.exe --suite single --data_mode random --tests 64 --full true --loglevel 1Single realistic corpus in single mode:
out\Release\bin\pattern-bench.exe --suite single --data_mode synthetic_realistic --corpus mixed --tests 64 --full true --loglevel 1Runs synthetic realistic corpora and prints per-corpus results + aggregate leaderboard.
All corpora:
out\Release\bin\pattern-bench.exe --suite realistic --corpus all --tests 8 --full true --loglevel 1One corpus only:
out\Release\bin\pattern-bench.exe --suite realistic --corpus code --tests 8 --full true --loglevel 1Available corpora:
mixedcodestructuredtextpaddingentropy
Runs all pathological/degen stress cases and prints aggregate leaderboard:
out\Release\bin\pattern-bench.exe --suite pathological --tests 8 --full true --loglevel 1Runs everything in one pass:
- random baseline
- realistic suite (all corpora)
- pathological suite (all cases)
out\Release\bin\pattern-bench.exe --suite combined --tests 8 --full true --loglevel 1Filter to one scanner:
out\Release\bin\pattern-bench.exe --suite combined --filter "x64dbg" --tests 8 --full true --loglevel 1Lock seed for reproducibility:
out\Release\bin\pattern-bench.exe --suite realistic --corpus all --seed 0x88BEA0B2 --tests 8 --full true --loglevel 1Run only one generated test index:
out\Release\bin\pattern-bench.exe --suite single --test 0 --tests 1 --full true --loglevel 4Change region size (bytes):
out\Release\bin\pattern-bench.exe --suite realistic --corpus all --size 33554432 --tests 8 --full true --loglevel 1Smoke-only check:
out\Release\bin\pattern-bench.exe --smoke_only trueSkip smoke checks:
out\Release\bin\pattern-bench.exe --skip_smokeBenchmark against a real binary file (--file supports --suite single only):
out\Release\bin\pattern-bench.exe --suite single --file "C:\path\to\binary.exe" --tests 64 --full true --loglevel 1Failure details are always logged to unique files under:
failure_logs/
Each run creates a timestamped JSONL session file, plus per-failure binary dumps when mismatches happen.