You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Recently we moved the ReactiveProperty from Reactive.Bindings.ReactiveProperty to ReactiveUI.ReactiveProperty.
Now we encountered massiv performance problems for the following use case.
If you subscribe a ReactiveProperty very often, the application will freeze. It is very performace intensiv.
With Reactive.Bindings.ReactiveProperty it was not a problem.
Example
public class BasicComparisonViewModel
{
private readonly SourceCache<BasicViewModel, int> cache = new(static x => x.Id);
// ReactiveUI => slow
public ReactiveProperty<int> Property => new (42);
// System.Reactive => fast
//public Reactive.Bindings.ReactiveProperty<int> Property => new Reactive.Bindings.ReactiveProperty<int>(42);
public BasicComparisonViewModel()
{
this.cache.Edit(x =>
{
for(var i = 0; i < 3000; i++)
{
x.AddOrUpdate(new BasicViewModel(i, this));
}
});
}
}
internal class BasicViewModel
{
public int Id { get; }
public BasicViewModel(int id, BasicComparisonViewModel vm)
{
this.Id = id;
vm.Property.Subscribe();
}
}
I have done a few tests and it appears that if I include Reactive.Bindings.ReactiveProperty package in the application then indeed the multiple Subscriptions take excessive time to complete, would you be able to test this in two separate projects one with ReactiveUI only and the other with the ReactiveProperty package only, from the tests I have done 3000 subscriptions with ReactiveUI takes around 900 - 1200 ms (framework dependent), this is repeatable over and over from my findings
Describe the bug 🐞
Recently we moved the ReactiveProperty from Reactive.Bindings.ReactiveProperty to ReactiveUI.ReactiveProperty.
Now we encountered massiv performance problems for the following use case.
If you subscribe a ReactiveProperty very often, the application will freeze. It is very performace intensiv.
With Reactive.Bindings.ReactiveProperty it was not a problem.
Example
Our measurements
Reactive.Bindings.ReactiveProperty: ~3ms
ReactiveUI.ReactiveProperty: ∞
Step to reproduce
Reproduction repository
https://github.com/reactiveui/ReactiveUI
Expected behavior
This should happen...
Screenshots 🖼️
No response
IDE
No response
Operating system
No response
Version
No response
Device
No response
ReactiveUI Version
No response
Additional information ℹ️
No response
The text was updated successfully, but these errors were encountered: