linebender / linebender/xilem

Profile run time

Open
#362 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

architecture masonry
Dominant language
Rust
Stars
5.5k
Forks
240
Avg merge
4d 21h
Merged PRs (30d)
4

Description

## Tooling

Masonry should have infrastructure to measure various runtime performance characteristics.

Because it's a GUI app, profiling is a bit more complicated than "run program 100x times, measure average performance". What we'd want to do is measure things like average FPS count, 99% latency, startup times, etc.

We need to look up industry best practices for profiling GUI and, if necessary, make up our own. At the very least, we should have tooling built into the pass system (maybe using `tracing` ?) to measure the targets listed above, and easy ways to dump the results. We might even want a "dump some core indicators to stdout on program exit" feature to be enabled by default in debug mode, to encourage thinking about these indicators.

## Benchmarks

We should produce some benchmarks; again, we may want to both consider the state of the art (eg js-framework-benchmark) and make our own.

I'm especially interested in cases that stress-test Masonry: lists with millions of items, a widget hierarchy which is thousand of nodes deep, ridiculously high resolutions, etc.

For all those cases, we should consider not only the passive performance (eg how long does it take to render a frame), but also the performance given mouse events, keyboard events, etc.

Contributor guide

No contributing guide indexed for this repository

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 by defining the GUI profiling requirements: average FPS, 99% latency, startup time, and input-event performance. Review the pass system and evaluate whether tracing can provide measurement and result dumping. Consider benchmark scenarios such as millions of items, deep widget hierarchies, and high resolutions; done requires agreed tooling and representative benchmarks.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.