mstange · GitHub

@mstange

@mstange

@mstange

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.

@mstange

@mstange

@mstange

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

Merged

Read the original on github.com ↗