reactiveui / reactiveui/Primitives

Benchmark the platform dispatcher sequencers

Open
#216 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
15
Forks
3
Avg merge
1d 4h
Merged PRs (30d)
24

Description

The benchmark suite covers every production type that can run on Linux. The platform dispatcher sequencers are not covered, because each needs its own host:

  • DispatcherSequencer (WPF), ControlSequencer (WinForms) and DispatcherQueueSequencer (WinUI), in both the plain and .Reactive packages. These need a Windows-targeted benchmark project.
  • MauiDispatcherSequencer, in both packages. This needs a MAUI host.
  • HandlerSequencer (Android) and NSRunloopSequencer (Apple), in ReactiveUI.Primitives and ReactiveUI.Primitives.Reactive. These need a device or simulator run.
  • CoalescingDispatchState and DispatchWorkItem compile only into the Android and Apple targets, so they are reached through those sequencers.

Each sequencer should be measured the way the Blazor and Avalonia ones are in ReactiveUI.Primitives.Benchmarks: a burst of scheduled work items and an ObserveOn pipeline, against the platform's own dispatcher call and the System.Reactive scheduler for that host. Work must be drained deterministically rather than waited on.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in ReactiveUI.Primitives.Benchmarks by reading the existing Blazor and Avalonia benchmarks, then identify the Windows, MAUI, Android, and Apple benchmark hosts needed for the listed sequencers. Measure scheduled-work bursts and ObserveOn against each platform dispatcher and its System.Reactive scheduler, with deterministic draining. Done means all listed sequencers and platform-only dispatch types are covered on their target hosts.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.