Skip to content

Overview and performance for large applications #6

Description

@hermanbanken

One open problem of RxFiddle is scalability and overview. RxFiddle can instrument large applications just fine. As an example I instrumented RxFiddle with itself and this works. The data collection works and can be exported to JSON.

The problem lies with the performance of rendering the dependency graphs. The graph structure can become huge when using higher order streams. The layout is based on the StoryFlow paper and my custom implementation of what they describe is clearly not optimal. The layout works in different phases:

  • ranking (DAG rank from Dagre)
  • ordening of nodes per rank (each rank corresponds to a time slice from StoryFlow)
    • calculate weighted medians of connected nodes
    • transpose using storyflow method (minimizing crossings) in 2 passes (1 up, 1 down)
    • check if cost of ordering (amount of crossings) is less than before
    • repeat iteratively (20 times, up down sweeping) until cost becomes stable
  • priority layout
    • realign nodes in iterative fashion (storyflow methodology) assigning x/y coordinates to nodes
  • render SVG

For many nodes the ordering and priority layouting becomes very heavy as it is polynomial.

By reducing the amount of nodes we can greatly improve the experience.

Any ideas are welcome. I like to work to something like Tensorflow Graph Visualization which happens to be open source.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions