enso/lib/rust/ensogl/component
Kaz Wesley bd60a20bd3
Profiling workflows (#3475)
Define some workflows for batch-mode profiling.

Implemented:
- collapse nodes
- create node
- enter collapsed node
- new project
- open visualization

They can currently be built and run with a command like:
`./run.sh ide build --profiling-level=debug && dist/ide/linux-unpacked/enso --entry-point profile --workflow create_node --save-profile out.json`

And the data can be displayed with:
`dist/ide/linux-unpacked/enso --entry-point profiling_run_graph --load-profile out.json`

Demo of recording and viewing a profile with a command-line one-liner:

https://user-images.githubusercontent.com/1047859/169954795-2d9520ca-84f9-45d2-b83a-5063ebe6f718.mp4

See: https://www.pivotaltracker.com/story/show/182195399.

# Important Notes
- When defining workflows, two helpers are enough to allow us to tell when the action is really done: `Fixture::compile_new_shaders`, and `Fixture::backend_execution`. Often, it is appropriate to await both, but it depends on the task.
- The shader compiler is now driven by a `Controller`; while the `Compiler` is reset if context is lost, the `Controller`'s state survives context loss.
- A new `--load-profile` option supports specifying a profile by path when running `profiling_run_graph`.
- Drop the `with_same_start` profiler interface; we ended up preferring a child profiler convention, and this interface was not implemented compatibly with the stricter data model we've had since the introduction of `profiler::data`.
- Fix the noisy `rustfmt` output.
2022-06-01 18:01:16 +00:00
..
button Fixing regression - mouse buttons were not distinguished properly. (#3401) 2022-04-15 16:08:30 +02:00
drop-down-menu Fixing regression - mouse buttons were not distinguished properly. (#3401) 2022-04-15 16:08:30 +02:00
drop-manager New IDE build script (#3466) 2022-05-23 04:16:04 +02:00
file-browser Linting codebase 2022-03-10 05:32:33 +01:00
flame-graph Implement multi-process message visualisation. (#3423) 2022-05-03 09:40:27 +00:00
gui New IDE build script (#3466) 2022-05-23 04:16:04 +02:00
label Linting codebase 2022-03-10 05:32:33 +01:00
list-view Component Group Entry with icons and text highlighting. (#3459) 2022-05-24 09:48:19 +02:00
scroll-area Fully visible group name in partially scrolled Component Group View (#3447) 2022-05-17 13:52:08 +00:00
scrollbar Linting codebase 2022-03-10 05:32:33 +01:00
selector New IDE build script (#3466) 2022-05-23 04:16:04 +02:00
sequence-diagram Component Group Entry with icons and text highlighting. (#3459) 2022-05-24 09:48:19 +02:00
shadow Fully visible group name in partially scrolled Component Group View (#3447) 2022-05-17 13:52:08 +00:00
src Implement multi-process message visualisation. (#3423) 2022-05-03 09:40:27 +00:00
text Profiling workflows (#3475) 2022-06-01 18:01:16 +00:00
toggle-button Fixing regression - mouse buttons were not distinguished properly. (#3401) 2022-04-15 16:08:30 +02:00
tooltip New IDE build script (#3466) 2022-05-23 04:16:04 +02:00
Cargo.toml Implement multi-process message visualisation. (#3423) 2022-05-03 09:40:27 +00:00