[Deploy preview] Add a function list#5233
Draft
mstange wants to merge 21 commits into
Draft
Conversation
48f5a60 to
c8c16b9
Compare
c8c16b9 to
4d44cf7
Compare
25bc285 to
af75e01
Compare
26f8559 to
abde12b
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #5233 +/- ##
==========================================
- Coverage 83.45% 83.11% -0.35%
==========================================
Files 342 351 +9
Lines 36075 37859 +1784
Branches 10106 10507 +401
==========================================
+ Hits 30108 31467 +1359
- Misses 5539 5960 +421
- Partials 428 432 +4 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
0a676f1 to
86bf68a
Compare
It's not used by any TreeView users yet. The next commit will use it for the marker table. The intention is to also use it for the function list.
The sort is also persisted in the URL.
This will let us use flame graphs in other places, for example in the function list panel (for callee / caller views) or in a benchmark comparison view. ConnectedFlameGraph is the connected version and works as before. This commit also removes MaybeFlameGraph. The flame graph no longer respects the global "is inverted" flag, so the performance warning in MaybeFlameGraph was never shown. The only other functionality of MaybeFlameGraph was that it displayed "empty reasons" when the preview selection was empty; this part has been subsumed into ConnectedFlameGraph.
This lets us build the timing rows lazily, as the flame graph scrolls them into view. Building the rows isn't that expensive with the regular flame graph, but it'll be more expensive for the inverted "calls to the selected function" icicle flame graph that I'm planning to add to the function list panel.
This takes advantage of the fact that the flame graph now requests a row only once it's on the screen. Note that there's a difference between "FlameGraphRows" and "FlameGraphTiming" rows. The FlameGraphRows are still computed eagerly. It's just the timing that is now computed lazily per displayed row. The FlameGraphRows are based on the call node info and independent of sample counts and preview selection. When switching to the Flame Graph panel on https://share.firefox.dev/4g4xGue , with a flame graph canvas height of 564px, I'm getting the following profiles: Before: https://share.firefox.dev/4w2QEG3 (410ms tab switch) After: https://share.firefox.dev/3QYB7IA (272ms tab switch) In those profiles you can also see the different memory usage characteristics.
… flame graph code. For the non-inverted call node info, the two are equivalent. But if we want to use the flame graph on an inverted call node info, such as for the "called by" view in the function list, the old code would not work because the callNodeTable is always the non-inverted call node table. So this change removes one barrier for inverted flame graphs.
startsAtBottom={true} is the regular flame graph layout.
startsAtBottom={false} can be used for icicle-style flame graphs.
This will be used by the function list when double-clicking on a function.
…coped percentages.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Deploy preview
WIP implementing the approach outlined in #15 (comment)