Rambla.Diagnostics
0.5.2
dotnet add package Rambla.Diagnostics --version 0.5.2
NuGet\Install-Package Rambla.Diagnostics -Version 0.5.2
<PackageReference Include="Rambla.Diagnostics" Version="0.5.2" />
<PackageVersion Include="Rambla.Diagnostics" Version="0.5.2" />
<PackageReference Include="Rambla.Diagnostics" />
paket add Rambla.Diagnostics --version 0.5.2
#r "nuget: Rambla.Diagnostics, 0.5.2"
#:package Rambla.Diagnostics@0.5.2
#addin nuget:?package=Rambla.Diagnostics&version=0.5.2
#tool nuget:?package=Rambla.Diagnostics&version=0.5.2
Rambla.Diagnostics
Live diagnostics for Rambla — turns the invisible cost of pushing background state to the UI into something you can observe and prove.
Attach a session to any RamblaState and poll it for a reading:
using Rambla.Diagnostics;
using var session = StateDiagnostics.Attach(viewModel);
// ...later, e.g. once a second on a timer:
DiagnosticsSnapshot s = session.Snapshot();
Console.WriteLine(s);
MarketViewModel
Incoming state mutations : 18,420 / sec
UI notifications : 58 / sec
Coalescing : 99.68 %
Longest UI flush : 2.8 ms
UI thread budget : 17 %
⚠ 'Positions' generated 14,281 notifications/sec. Recommendation: batch related
writes with BeginUpdate(), or for a collection use Batch()/ReplaceSnapshot().
What you get
- Rates over a window — mutations/sec, notifications/sec (only events actually raised to a subscriber — zero while nothing is bound), flushes/sec, and the coalescing ratio (how many mutations coalescing dropped before the flush).
- Hot-property detection — which properties produce the most notification traffic, each with its own coalescing ratio.
- Actionable recommendations — e.g. "batch this" when a property floods the UI.
- Dispatcher metrics (optional) — wrap your scheduler with
DiagnosticsSchedulerto also measure dispatcher latency, hops, and an accurate UI-thread budget.
How it works
Diagnostics attach a pure observer (IStateProbe) to the state. It does not
change any behaviour — notification order, coherence, coalescing, and exception
semantics are exactly as without it — and it costs nothing when detached. The
sampler is clock-driven (IClock), so rate math is deterministic and testable.
// With dispatcher metrics:
var scheduler = new DiagnosticsScheduler(DispatcherStateScheduler.ForCurrent());
var vm = new MarketViewModel(scheduler);
using var session = StateDiagnostics.Attach(vm, scheduler);
Links
- Repository & docs: https://github.com/nicoseijas/RamblaState
- Wiki: https://github.com/nicoseijas/RamblaState/wiki
Released under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Rambla (>= 0.5.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.