Compute FlameGraphTiming rows lazily#6126
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #6126 +/- ##
=======================================
Coverage 83.45% 83.46%
=======================================
Files 342 342
Lines 36075 36094 +19
Branches 10106 10108 +2
=======================================
+ Hits 30108 30126 +18
- Misses 5539 5540 +1
Partials 428 428 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
c06737a to
427fa45
Compare
b131f01 to
e1da1db
Compare
fatadel
approved these changes
Jun 26, 2026
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.
e1da1db to
f31eedf
Compare
Merged
canova
added a commit
that referenced
this pull request
Jun 29, 2026
Changes: [Nazım Can Altınova] Bump profiler-cli version to 0.3.0 (#6104) [Markus Stange] First typed array: Allow profile.shared.stackTable.frame to be an Int32Array (#6087) [Nazım Can Altınova] Show more user friendly errors for unsupported profile version in both the frontend and the cli (#6107) [fatadel] Expose counter information in profiler-cli (#6084) [Markus Stange] Split getSelfAndTotal. (#6113) [Markus Stange] Add missing transform shortcut key handling for S (focus-self) (#6117) [Markus Stange] Remove unused isInverted prop from FlameGraphCanvas. (#6116) [Markus Stange] Change sidebar splitter CSS to only apply to the sidebar, not to all splitters under .DetailsContainer (#6114) [Markus Stange] Pass callNodeInfo to handleCallNodeTransformShortcut. (#6115) [Markus Stange] Move column declarations out into a separate file (#6119) [fatadel] Keep menu panels above the selected-marker tooltip (#6125) [Nazım Can Altınova] Make sure to always sanitize source contents even when no PII sanitization is requested (#6127) [Markus Stange] Compute FlameGraphTiming rows lazily (#6126) [Markus Stange] Create a non-connected FlameGraph component (#6118) [Nazım Can Altınova] 🔃 Sync: l10n -> main (June 29, 2026) (#6130) And special thanks to our localizers: de: Michael Köhler el: Jim Spentzos en-GB: Ian Neal es-CL: ravmn fr: Théo Chevalier fur: Fabio Tomat fy-NL: Fjoerfoks ia: Melo46 it: Francesco Lodolo [:flod] nl: Mark Heijl ru: Valery Ledovskoy sv-SE: Luna Jernberg zh-TW: Pin-guang Chen
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.
Before this PR, we were always computing positioning information for the entire flame graph, even though the viewport is usually too small to display the entire flame graph - only the N root-most rows are displayed, until the user starts scrolling / panning. This PR changes it so that we only compute the box positions / "FlameGraphTiming" for the rows that get rendered by the flame graph canvas. This speeds up the initial render of the flame graph panel.
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)