Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use state machine to parse directives #3243

Open
wants to merge 2 commits into
base: v0.1.x
Choose a base branch
from
Open

Use state machine to parse directives #3243

wants to merge 2 commits into from

Conversation

djc
Copy link
Contributor

@djc djc commented Mar 25, 2025

Intended to fix #3174. Have not done any benchmarks yet -- suggestions on how best to approach that are welcome.

This is a little bit more code, but IMO maybe slightly more readable?

It's correct enough that it passes the tests, there might be edge cases that aren't covered but those should be easy to solve.

@dpc
Copy link
Contributor

dpc commented Mar 26, 2025

> hyperfine --warmup 30 -N ./target/release/dotr-before ./target/release/dotr-after
Benchmark 1: ./target/release/dotr-before
  Time (mean ± σ):       1.2 ms ±   0.1 ms    [User: 0.4 ms, System: 0.7 ms]
  Range (min … max):     1.1 ms …   1.9 ms    2044 runs

Benchmark 2: ./target/release/dotr-after
  Time (mean ± σ):     613.8 µs ±  79.6 µs    [User: 289.1 µs, System: 254.0 µs]
  Range (min … max):   511.5 µs … 979.8 µs    5264 runs

Summary
  ./target/release/dotr-after ran
    2.03 ± 0.34 times faster than ./target/release/dotr-before 

Added true just to have a baseline:

Benchmark 1: ./target/release/dotr-before
  Time (mean ± σ):       1.2 ms ±   0.1 ms    [User: 0.4 ms, System: 0.7 ms]
  Range (min … max):     1.1 ms …   1.8 ms    2535 runs

Benchmark 2: ./target/release/dotr-after
  Time (mean ± σ):     611.7 µs ±  80.3 µs    [User: 295.6 µs, System: 244.1 µs]
  Range (min … max):   518.8 µs … 1663.5 µs    3825 runs

Benchmark 3: true
  Time (mean ± σ):     595.8 µs ±  74.1 µs    [User: 311.4 µs, System: 215.4 µs]
  Range (min … max):   512.3 µs … 1035.5 µs    5362 runs

This app sets RUST_LOG internally, so setting it from the outside doesn't make a difference.

AFAICT you fixed it and it's nearly free now.

@klensy
Copy link
Contributor

klensy commented Mar 27, 2025

After this, regex can be removed from Cargo.toml (for tracing-subscriber), only left in dev-deps?

@djc djc force-pushed the parse-directive branch from 12445d7 to b298124 Compare March 27, 2025 12:21
@djc
Copy link
Contributor Author

djc commented Mar 27, 2025

After this, regex can be removed from Cargo.toml (for tracing-subscriber), only left in dev-deps?

Nice catch, yes! Added that into the first commit.

@djc djc force-pushed the parse-directive branch from b298124 to d533cdf Compare March 29, 2025 10:37
@djc djc force-pushed the parse-directive branch from d533cdf to a4484c3 Compare March 29, 2025 10:38
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.

4 participants