Skip to content

Conversation

MichaReiser
Copy link
Contributor

@MichaReiser MichaReiser commented Sep 28, 2025

Run a single fixpoint iteration for strongly connected components
to avoid exponential runtime for deeply nested cycles.

TODO:

  • Documentation
  • Investigate perf regressions
  • Test that demonstrates the "collapsing" of nested cycles
  • Review if there are any changes necessary to maybe_changed_after
  • Investigate why cycle_nested_deep_conditional_changed::the_test sometimes hangs or panics

Copy link

netlify bot commented Sep 28, 2025

Deploy Preview for salsa-rs canceled.

Name Link
🔨 Latest commit 15e650a
🔍 Latest deploy log https://app.netlify.com/projects/salsa-rs/deploys/68dcd71bb0779f0008ed6c0b

Copy link

codspeed-hq bot commented Sep 28, 2025

CodSpeed Performance Report

Merging #995 will degrade performances by 11.27%

Comparing MichaReiser:fixpoint-scc (d7e0774) with master (9c3278f)

Summary

❌ 4 regressions
✅ 8 untouched

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown

Benchmark BASE HEAD Change
amortized[Input] 2.3 µs 2.4 µs -4.18%
amortized[InternedInput] 2.2 µs 2.3 µs -4.34%
amortized[SupertypeInput] 2.9 µs 3.1 µs -6.35%
converge_diverge 127.3 µs 143.4 µs -11.27%

@MichaReiser
Copy link
Contributor Author

Assuming I'm getting this to work. One interesting optimization for memo.block_on is to have a DependencyGraph::all_cycles(queries) method instead. That's much cheaper than iterating over all memos (and only requires aquiring a single lock)

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