From ffdba4a5043ed871ced7bcd45286dc8e438d5f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Qu=C3=A8ze?= Date: Fri, 7 Feb 2025 16:19:42 +0100 Subject: [PATCH] Nicer import of chrome-trace profiles generated by gradle-profiler. --- src/profile-logic/import/chrome.js | 87 ++++++++++++-- .../profile-conversion.test.js.snap | 108 ++++++++++++++++++ 2 files changed, 183 insertions(+), 12 deletions(-) diff --git a/src/profile-logic/import/chrome.js b/src/profile-logic/import/chrome.js index d06fa310cb..77f7a74cfa 100644 --- a/src/profile-logic/import/chrome.js +++ b/src/profile-logic/import/chrome.js @@ -951,6 +951,21 @@ function extractMarkers( }, ], }, + { + name: 'Text', + tooltipLabel: '{marker.name}', + tableLabel: '{marker.name} — {marker.data.text}', + chartLabel: '{marker.data.text}', + display: ['marker-chart', 'marker-table'], + data: [ + { + key: 'text', + label: 'Description', + format: 'string', + searchable: true, + }, + ], + }, ]; for (const [name, events] of eventsByName.entries()) { @@ -1005,21 +1020,69 @@ function extractMarkers( if (event.args && typeof event.args === 'object') { argData = (event.args: any).data || null; } - markers.name.push(stringTable.indexForString(name)); + markers.category.push(otherCategoryIndex); + let newData = {}; + const prefixes = [ + 'Apply build file', + 'Apply initialization script', + 'Apply plugin', + 'Apply script', + 'Apply settings file', + 'Calculate build tree task graph', + 'Calculate task graph', + 'Configure build', + 'Configure project', + 'Compile build file', + 'Compile script', + 'Cross-configure project', + 'Download', + 'Evaluate settings', + 'Execute countainer callback action', + 'Execute', + 'Executing', + 'Finalize build cache configuration', + 'Fingerprint transform inputs', + 'Finish root build tree', + 'Identifying work', + 'Load build', + 'Load projects', + 'Notify afterEvaluate listeners', + 'Notify beforeEvaluate listeners', + 'Notify projectsEvaluated listeners', + 'Notify projectsLoaded listeners', + 'Notify task graph', + 'Realize task', + 'Register task', + 'Resolve dependencies of', + 'Resolve files of configuration', + 'Resolve', + 'Run init scripts', + 'Run main tasks', + 'Snapshot', + 'Toolchain detection', + ]; + const prefix = prefixes.find((p) => name.startsWith(p)); + if (prefix) { + newData.type = 'Text'; + newData.text = name.slice(prefix.length + 1); + markers.name.push(stringTable.indexForString(prefix)); + } else { + markers.name.push(stringTable.indexForString(name)); - if (argData && 'type' in argData) { - argData.type2 = argData.type; - } - if (argData && 'category' in argData) { - argData.category2 = argData.category; - } + if (argData && 'type' in argData) { + argData.type2 = argData.type; + } + if (argData && 'category' in argData) { + argData.category2 = argData.category; + } - const newData = { - ...argData, - type: name, - category: event.cat, - }; + newData = { + ...argData, + type: name, + category: event.cat, + }; + } // $FlowExpectError Opt out of Flow checking for this one. markers.data.push(newData); diff --git a/src/test/unit/__snapshots__/profile-conversion.test.js.snap b/src/test/unit/__snapshots__/profile-conversion.test.js.snap index ccf5dc3b3b..a3d1798c5c 100644 --- a/src/test/unit/__snapshots__/profile-conversion.test.js.snap +++ b/src/test/unit/__snapshots__/profile-conversion.test.js.snap @@ -345371,6 +345371,24 @@ Object { "tableLabel": "{marker.data.type2}", "tooltipLabel": "{marker.data.type2} - EventDispatch", }, + Object { + "chartLabel": "{marker.data.text}", + "data": Array [ + Object { + "format": "string", + "key": "text", + "label": "Description", + "searchable": true, + }, + ], + "display": Array [ + "marker-chart", + "marker-table", + ], + "name": "Text", + "tableLabel": "{marker.name} — {marker.data.text}", + "tooltipLabel": "{marker.name}", + }, ], "misc": "", "oscpu": "", @@ -393833,6 +393851,24 @@ Object { "tableLabel": "{marker.data.type2}", "tooltipLabel": "{marker.data.type2} - EventDispatch", }, + Object { + "chartLabel": "{marker.data.text}", + "data": Array [ + Object { + "format": "string", + "key": "text", + "label": "Description", + "searchable": true, + }, + ], + "display": Array [ + "marker-chart", + "marker-table", + ], + "name": "Text", + "tableLabel": "{marker.name} — {marker.data.text}", + "tooltipLabel": "{marker.name}", + }, ], "misc": "", "oscpu": "", @@ -442295,6 +442331,24 @@ Object { "tableLabel": "{marker.data.type2}", "tooltipLabel": "{marker.data.type2} - EventDispatch", }, + Object { + "chartLabel": "{marker.data.text}", + "data": Array [ + Object { + "format": "string", + "key": "text", + "label": "Description", + "searchable": true, + }, + ], + "display": Array [ + "marker-chart", + "marker-table", + ], + "name": "Text", + "tableLabel": "{marker.name} — {marker.data.text}", + "tooltipLabel": "{marker.name}", + }, ], "misc": "", "oscpu": "", @@ -445179,6 +445233,24 @@ Object { "tableLabel": "{marker.data.type2}", "tooltipLabel": "{marker.data.type2} - EventDispatch", }, + Object { + "chartLabel": "{marker.data.text}", + "data": Array [ + Object { + "format": "string", + "key": "text", + "label": "Description", + "searchable": true, + }, + ], + "display": Array [ + "marker-chart", + "marker-table", + ], + "name": "Text", + "tableLabel": "{marker.name} — {marker.data.text}", + "tooltipLabel": "{marker.name}", + }, ], "misc": "", "oscpu": "", @@ -448179,6 +448251,24 @@ Object { "tableLabel": "{marker.data.type2}", "tooltipLabel": "{marker.data.type2} - EventDispatch", }, + Object { + "chartLabel": "{marker.data.text}", + "data": Array [ + Object { + "format": "string", + "key": "text", + "label": "Description", + "searchable": true, + }, + ], + "display": Array [ + "marker-chart", + "marker-table", + ], + "name": "Text", + "tableLabel": "{marker.name} — {marker.data.text}", + "tooltipLabel": "{marker.name}", + }, ], "misc": "", "oscpu": "", @@ -451772,6 +451862,24 @@ Object { "tableLabel": "{marker.data.type2}", "tooltipLabel": "{marker.data.type2} - EventDispatch", }, + Object { + "chartLabel": "{marker.data.text}", + "data": Array [ + Object { + "format": "string", + "key": "text", + "label": "Description", + "searchable": true, + }, + ], + "display": Array [ + "marker-chart", + "marker-table", + ], + "name": "Text", + "tableLabel": "{marker.name} — {marker.data.text}", + "tooltipLabel": "{marker.name}", + }, ], "misc": "", "oscpu": "",