I agree that we need to be careful about not trying to implement the entire tool described here before releasing anything. A slice of the functionality (no gui, just invoke cargo/rustc, print report to terminal) would be a good start. Once the architecture for that is in place it should be straightforward to add new kinds of report renderers (like flamegraphs).
To clarify, I think the motivation for the tool is:
- the set of correct rustc options for difference profiles can be complex and maybe even changes from release to release
- you need a suite of different tools to fully process the data, e.g. post-processing steps
Seems well-motivated! I feel the "curses-based UI" (as you wrote) is not necessary for a first step.
I also think that a cargo plugin (e.g.,
cargo self-profile) would be how I would expect to expose the functionality, though I suppose that a standalone tool is nice too. (Particularly for those not using cargo, a group which is probably over-represented in those with large programs in need of profiling.)
Anyway I like the plan in general. Creating a MVP seems good too.
Yes, that's correct.