Skip to content

perf: add benchmark suites and CI performance testing#84

Merged
raaymax merged 4 commits intomasterfrom
wt-test-performance
Mar 12, 2026
Merged

perf: add benchmark suites and CI performance testing#84
raaymax merged 4 commits intomasterfrom
wt-test-performance

Conversation

@raaymax
Copy link
Copy Markdown
Owner

@raaymax raaymax commented Mar 9, 2026

Summary

Add comprehensive performance benchmarks for rendering and filtering to detect regressions early. Includes CI integration that runs on every PR.

Changes

  • Extract parsing and text_wrap into shared modules so filter and renderer can be exposed through lib.rs for benchmark access
  • Move filter/orchestrator to filter_orchestrator (binary-only) to unblock lib.rs exports
  • Add render benchmark (11 scenarios): builtin JSON/logfmt, custom presets with style_map/style_when, regex presets — each with no-wrap/wrap-120/wrap-40 variants
  • Add filter benchmark (14 scenarios): string (case-sensitive/insensitive/SIMD), regex (simple/complex), structured query (JSON/logfmt), index-accelerated, and SearchEngine dispatch paths
  • Both benchmarks generate realistic mixed-format log files, run multiple trials with warmup, and report mean/p50/p95/stddev/throughput
  • Add CI Performance job running both benchmarks on 10MB files with JSON output and artifact upload

Testing

  • Benchmarks verified locally at 5MB, 100MB, and 500MB — throughputs scale linearly with no hidden bottlenecks
  • All 514 lib tests and 687 bin tests pass
  • JSON output validated for CI consumption
  • Fixed auto_detect benchmark that was accidentally a no-op (missing flags)

raaymax added 4 commits March 9, 2026 16:15
Move parsing (parse_logfmt, extract_json_field) and text_wrap
(wrap_spans, wrap_plain, wrap_content) into standalone modules so they
can be used by both the binary and the library crate. Move
filter/orchestrator to filter_orchestrator (binary-only) to unblock
exposing the filter module through lib.rs for benchmarks.
Add two benchmark suites for regression detection:
- render: 11 scenarios covering builtin/custom/regex presets with wrap
- filter: 14 scenarios covering string/regex/query/indexed filter paths

Both generate realistic mixed-format log files (JSON/logfmt/plain),
run multiple trials, and report mean/p50/p95/stddev/throughput.
Support --size, --trials, and --json CLI flags.

Add CI benchmark job running on 10MB files to catch regressions.
Fix CI formatting check failures across benchmark and source files.
@raaymax raaymax merged commit a65dc1d into master Mar 12, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant