Repository navigation
Resolve extras and check marker reachability without DNF - #22608
charliermarsh merged 4 commits into
Conversation
Merging this PR will regress 11 benchmarks
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | imbibe_marker_no_conflicts[0] |
287.4 ns | 343 ns | -16.2% |
| ❌ | Simulation | finish_blake2b[65536] |
435.1 ms | 514.2 ms | -15.39% |
| ❌ | Simulation | imbibe_marker_environment_only[4] |
12.1 µs | 14 µs | -13.69% |
| ❌ | Simulation | imbibe_marker_environment_only[32] |
12 µs | 13.9 µs | -13.39% |
| ❌ | Simulation | imbibe_marker_environment_only[16] |
12.1 µs | 13.9 µs | -13.33% |
| ❌ | Simulation | finish_blake2b[4096] |
522.7 ms | 602.5 ms | -13.24% |
| ❌ | Simulation | imbibe_marker_conflict_dependent[32] |
13 µs | 14.8 µs | -11.9% |
| ❌ | Simulation | imbibe_marker_conflict_dependent[16] |
13.1 µs | 14.8 µs | -11.85% |
| ❌ | Simulation | imbibe_marker_conflict_dependent[4] |
13.2 µs | 14.9 µs | -11.77% |
| ❌ | WallTime | imbibe_marker_conflict_dependent[16] |
131 ns | 139 ns | -5.76% |
| ❌ | WallTime | imbibe_marker_conflict_dependent[4] |
131 ns | 139 ns | -5.76% |
| ⚡ | WallTime | resolve_activated_extras_independent_pairs[8] |
33,159.1 µs | 1.2 µs | ×27,000 |
| ⚡ | Simulation | resolve_activated_extras_independent_pairs[8] |
664,678.1 µs | 43.7 µs | ×15,000 |
| ⚡ | WallTime | resolve_activated_extras_independent_pairs[4] |
62,492 ns | 656 ns | ×95 |
| ⚡ | Simulation | resolve_activated_extras_independent_pairs[4] |
1,191.7 µs | 30.7 µs | ×39 |
| ⚡ | WallTime | resolve_activated_extras_independent_pairs[2] |
2,484 ns | 341 ns | ×7.3 |
| ⚡ | Simulation | resolve_activated_extras_independent_pairs[2] |
70.6 µs | 24 µs | ×2.9 |
| ⚡ |
Simulation | discover_workspace_from_all_members |
155.6 ms | 122.3 ms | +27.23% |
| ⚡ |
Simulation | discover_workspace_from_all_members_with_excludes |
165.3 ms | 130.5 ms | +26.71% |
| ⚡ | WallTime | marker_to_dnf_single_clause |
169 ns | 134 ns | +26.12% |
| ... | ... | ... | ... | ... | ... |
ℹ️ Only the first 20 benchmarks are displayed. Go to the app to view all benchmarks.
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing charlie/direct-marker-transform (50164be) with charlie/bench-conflicting-extras (d53836f)
Footnotes
-
54 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
f2cf8c9 to
f99cf40
Compare
f99cf40 to
51f5610
Compare
51f5610 to
8f3e5b3
Compare
8f3e5b3 to
d66f9eb
Compare
d66f9eb to
97ebb1d
Compare
97ebb1d to
9f461ef
Compare
Summary
We represent markers as decision diagrams, but sometimes convert them to disjunctive normal form (DNF) to perform operations on them. Creating the DNF can be expensive: even a compact diagram can expand into exponentially many clauses.
This PR avoids DNF for two operations by working directly on the diagram:
extra == 'gpu'might be replaced withsys_platform == 'linux'. We reuse the result for shared parts of the diagram instead of rebuilding every DNF clause. Markers without extra expressions return before we build the replacement map.We still need DNF when rendering markers.
Related to #21954.