masonry-rs icon indicating copy to clipboard operation
masonry-rs copied to clipboard

Profile run time

Open PoignardAzur opened this issue 1 year ago • 0 comments

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.

PoignardAzur avatar Dec 24 '22 13:12 PoignardAzur