Update signal graph nodes in topological order. #658
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently every event requires visiting every node in the signal graph. This is an experiment to use topological order in the signal graph to only visit the nodes that need to update in the right order. This approach also makes for clearer signal propagation code (without count++ in recv etc.). This is O(n*log(n)) in the worst case, compared to O(n) but I expect this will be faster in most cases with multiple Input nodes. I tried it out on most examples in on elm-lang.org, it works. I couldn't think of a reason why this would behave any differently.
This was suggested by @stevengj on JuliaGizmos/Reactive.jl#4