Skip to content

Optimize DataModel Notification Strategy #842

@jacobsimionato

Description

@jacobsimionato

Proposal: Optimize DataModel Notification Strategy

Reason

The current DataModel.notifySignals implementation performs a linear scan of all registered signals to find descendants whenever a value is updated. This becomes a performance bottleneck as the number of reactive bindings grows.

Design

  1. Trie Structure: Replace the flat Map<string, Signal> for signals with a Trie (Prefix Tree).
  2. Efficient Lookup: When a path like /user is updated:
    • Bubble: Traverse up the tree to notify ancestors.
    • Cascade: Visit the subtree at user to notify all descendants.
  3. Complexity: This reduces notification overhead from $O(N)$ (where $N$ is total signals) to $O(P + D)$ (where $P$ is path depth and $D$ is the number of actual descendants).

Key Files

  • renderers/web_core/src/v0_9/state/data-model.ts

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions