Don't use rx for ExpressionNodes. #1694
Merged
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.


Following on from #1690, another PR to reduce memory allocations. This makes
ExpressionNodes no longerISubject<>s and instead transitions them to using an explicitSubscribe/Unsubscribemodel.ExpressionNodes were always single-subscriber and making them useIObservable<>meant that we had to have extra allocations in order to returnIDisposables.This saves a bunch more memory.
Memory Usage
Memory usage was measured via the VS2017 diagnostic tools by running ControlCatalog in Release mode, opening all pages and then taking a memory snapshot:
On master (after #1690):
This PR: