Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
b7fd9c3
Implement column sorting in the generic TreeView.
mstange Mar 31, 2026
d17fade
Implement column sorting in the marker table.
mstange Mar 31, 2026
f5f2c06
Split getSelfAndTotal.
mstange Mar 31, 2026
f8fd647
Add a function list panel.
mstange Nov 27, 2024
a047e74
Implement activity graph highlighting for function list
mstange Apr 3, 2026
6692b13
Implement function list context menu.
mstange Apr 3, 2026
b37ca58
Implement transform shortcut keys for function list
mstange Apr 3, 2026
46f1ee6
Scroll selection into view when applying/unapplying transforms
mstange Apr 3, 2026
242382d
Select self function when clicking in the activity graph
mstange Apr 3, 2026
7cd34e2
Select first row in the function list on mount.
mstange Apr 4, 2026
b0a2071
Implement double-clicking to show the bottom box in the function list.
mstange Apr 4, 2026
753722c
Pass callNodeInfo to handleCallNodeTransformShortcut.
mstange Mar 30, 2026
866d8a9
Add inverted butterfly wing.
mstange Mar 30, 2026
b595afc
Add context menu for inverted wing
mstange Apr 4, 2026
3918299
Add the upper butterfly wing.
mstange Mar 30, 2026
0dfd355
Fix splitter styling
mstange Mar 31, 2026
7c2d9ed
First attempt at FlameGraph refactor
mstange Apr 2, 2026
559f41f
Upper wing is now a flame graph
mstange Apr 2, 2026
19ebedf
Add self wing
mstange Apr 2, 2026
37abc89
Add disclosure box
mstange Apr 2, 2026
9bdb60e
Remove horizontal splitters, just use disclosure boxes.
mstange Apr 3, 2026
b2515c1
Fix flamegraph percentages for the function list subtree views.
mstange Apr 3, 2026
bc34598
Fix double-click opening source view and context menus in butterfly w…
mstange Apr 9, 2026
cc35f7e
Implement context menu for self wing
mstange Apr 14, 2026
cdddd7e
Persist disclosure box state in the URL.
mstange May 7, 2026
6b3569c
Persist selected function in the URL.
mstange May 7, 2026
e3af008
Make it so the replaceState idea actually works.
mstange May 8, 2026
68ff1b7
Add profiler-edit --only-keep-threads-with-markers-matching <marker-s…
mstange May 7, 2026
48231c4
Add profiler-edit --merge-non-overlapping-threads.
mstange Jun 4, 2026
191b0a1
Preserve CPU delta during thread merging.
mstange May 7, 2026
e496d7c
Add a --set-name argument to profiler-edit.
mstange May 7, 2026
93b9527
Add profiler-edit --canonicalize-js-location.
mstange Jun 1, 2026
993f38c
Add some speedometer analysis helper scripts
mstange May 6, 2025
0d82c62
Merge two stacks.
mstange May 8, 2026
c52af81
Add flame graphs.
mstange May 8, 2026
2338e97
Fix tooltip coordinates when scrolled down
mstange May 8, 2026
cdbaad4
Make flame graphs in benchmark comparison viewer only show measured s…
mstange May 13, 2026
1b45686
Improve cross-engine comparison matching.
mstange Jun 2, 2026
5058564
Add a hover effect to the table row.
mstange Jun 2, 2026
06eefd5
yarn lint-fix
mstange Jun 2, 2026
86bf254
Key expanded rows by index, not by function name (there can be collis…
mstange Jun 2, 2026
0c8885a
Only non-negligible changes
mstange Jun 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions locales/en-US/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -900,6 +900,7 @@ StackSettings--panel-search =
## Tab Bar for the bottom half of the analysis UI.

TabBar--calltree-tab = Call Tree
TabBar--function-list-tab = Function List
TabBar--flame-graph-tab = Flame Graph
TabBar--stack-chart-tab = Stack Chart
TabBar--marker-chart-tab = Marker Chart
Expand Down
3 changes: 2 additions & 1 deletion res/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ body {
flex-shrink: 1;
}

.treeAndSidebarWrapper {
.treeAndSidebarWrapper,
.functionTableAndSidebarWrapper {
display: flex;
flex: 1;
flex-flow: column nowrap;
Expand Down
24 changes: 24 additions & 0 deletions scripts/build-node-tools.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,33 @@ const profilerEditConfig = {
outfile: 'node-tools-dist/profiler-edit.js',
};

const analyzeBenchmarkConfig = {
...nodeBaseConfig,
entryPoints: ['src/node-tools/analyze-benchmark.ts'],
outfile: 'node-tools-dist/analyze-benchmark.js',
};

const extractBenchmarkStatsConfig = {
...nodeBaseConfig,
entryPoints: ['src/node-tools/extract-benchmark-stats.ts'],
outfile: 'node-tools-dist/extract-benchmark-stats.js',
};

const compareBenchmarkStatsConfig = {
...nodeBaseConfig,
entryPoints: ['src/node-tools/compare-benchmark-stats.ts'],
outfile: 'node-tools-dist/compare-benchmark-stats.js',
};

async function build() {
await esbuild.build(profilerEditConfig);
console.log('✅ profiler-edit build completed');
await esbuild.build(analyzeBenchmarkConfig);
console.log('✅ analyze-benchmark build completed');
await esbuild.build(extractBenchmarkStatsConfig);
console.log('✅ extract-benchmark-stats build completed');
await esbuild.build(compareBenchmarkStatsConfig);
console.log('✅ compare-benchmark-stats build completed');
}

build().catch(console.error);
24 changes: 24 additions & 0 deletions scripts/generate-known-functions-toml.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { execSync } from 'child_process';
import { writeFileSync } from 'fs';

const jsCode = execSync(
'node_modules/.bin/esbuild src/node-tools/profile-insert-labels/known-functions.ts --platform=node --format=esm'
).toString();

const dataUrl = 'data:text/javascript,' + encodeURIComponent(jsCode);
const { BREAK_OUT_BUCKETS } = await import(dataUrl);

let toml = '';
for (const bucket of BREAK_OUT_BUCKETS) {
toml += `[[buckets]]\n`;
toml += `name = ${JSON.stringify(bucket.name)}\n`;
toml += `funcPrefixes = [\n`;
for (const prefix of bucket.funcPrefixes) {
toml += ` ${JSON.stringify(prefix)},\n`;
}
toml += `]\n\n`;
}

const outPath = 'src/node-tools/profile-insert-labels/known-functions.toml';
writeFileSync(outPath, toml.trimEnd() + '\n');
console.log(`Wrote ${outPath}`);
7 changes: 7 additions & 0 deletions src/actions/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,13 @@ export function changeProfilesToCompare(profiles: string[]): Action {
};
}

export function changeProfilesToCompareBenchmark(profiles: string[]): Action {
return {
type: 'CHANGE_PROFILES_TO_COMPARE_BENCHMARK',
profiles,
};
}

export function startFetchingProfiles(): Action {
return { type: 'START_FETCHING_PROFILES' };
}
Expand Down
Loading
Loading