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.
Merged
canova added a commit that referenced this pull request
Jun 29, 2026Changes: [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
Merged