@codingame/monaco-vscode-performance-service-override 10.1.4 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-performance-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.0.0",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -26,6 +26,6 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"vscode": "npm:@codingame/monaco-vscode-api@
|
|
29
|
+
"vscode": "npm:@codingame/monaco-vscode-api@11.0.0"
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -27,7 +27,7 @@ registerAction2(class extends Action2 {
|
|
|
27
27
|
constructor() {
|
|
28
28
|
super({
|
|
29
29
|
id: 'perfview.show',
|
|
30
|
-
title: ( localize2(
|
|
30
|
+
title: ( localize2(2227, 'Startup Performance')),
|
|
31
31
|
category: Categories.Developer,
|
|
32
32
|
f1: true
|
|
33
33
|
});
|
|
@@ -42,7 +42,7 @@ registerAction2(class PrintServiceCycles extends Action2 {
|
|
|
42
42
|
constructor() {
|
|
43
43
|
super({
|
|
44
44
|
id: 'perf.insta.printAsyncCycles',
|
|
45
|
-
title: ( localize2(
|
|
45
|
+
title: ( localize2(2228, 'Print Service Cycles')),
|
|
46
46
|
category: Categories.Developer,
|
|
47
47
|
f1: true
|
|
48
48
|
});
|
|
@@ -64,7 +64,7 @@ registerAction2(class PrintServiceTraces extends Action2 {
|
|
|
64
64
|
constructor() {
|
|
65
65
|
super({
|
|
66
66
|
id: 'perf.insta.printTraces',
|
|
67
|
-
title: ( localize2(
|
|
67
|
+
title: ( localize2(2229, 'Print Service Traces')),
|
|
68
68
|
category: Categories.Developer,
|
|
69
69
|
f1: true
|
|
70
70
|
});
|
|
@@ -83,7 +83,7 @@ registerAction2(class PrintEventProfiling extends Action2 {
|
|
|
83
83
|
constructor() {
|
|
84
84
|
super({
|
|
85
85
|
id: 'perf.event.profiling',
|
|
86
|
-
title: ( localize2(
|
|
86
|
+
title: ( localize2(2230, 'Print Emitter Profiles')),
|
|
87
87
|
category: Categories.Developer,
|
|
88
88
|
f1: true
|
|
89
89
|
});
|
|
@@ -13,7 +13,6 @@ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extension
|
|
|
13
13
|
import { dispose } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
14
14
|
import { ICodeEditorService } from 'vscode/vscode/vs/editor/browser/services/codeEditorService';
|
|
15
15
|
import { writeTransientState } from 'vscode/vscode/vs/workbench/contrib/codeEditor/browser/toggleWordWrap';
|
|
16
|
-
import { LoaderStats } from 'vscode/vscode/vs/base/common/amd';
|
|
17
16
|
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService.service';
|
|
18
17
|
import { ITextFileService } from 'vscode/vscode/vs/workbench/services/textfile/common/textfiles.service';
|
|
19
18
|
import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
@@ -27,6 +26,7 @@ import { ITextResourceConfigurationService } from 'vscode/vscode/vs/editor/commo
|
|
|
27
26
|
import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
|
|
28
27
|
import { getWorkbenchContribution, Extensions } from 'vscode/vscode/vs/workbench/common/contributions';
|
|
29
28
|
import { ICustomEditorLabelService } from 'vscode/vscode/vs/workbench/services/editor/common/customEditorLabelService.service';
|
|
29
|
+
import { IRemoteAgentService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteAgentService.service';
|
|
30
30
|
|
|
31
31
|
var PerfviewContrib_1, PerfviewInput_1;
|
|
32
32
|
let PerfviewContrib = class PerfviewContrib {
|
|
@@ -61,7 +61,7 @@ let PerfviewInput = class PerfviewInput extends TextResourceEditorInput {
|
|
|
61
61
|
return PerfviewInput_1.Id;
|
|
62
62
|
}
|
|
63
63
|
constructor(textModelResolverService, textFileService, editorService, fileService, labelService, filesConfigurationService, textResourceConfigurationService, customEditorLabelService) {
|
|
64
|
-
super(PerfviewContrib.get().getInputUri(), ( localize(
|
|
64
|
+
super(PerfviewContrib.get().getInputUri(), ( localize(6151, "Startup Performance")), undefined, undefined, undefined, textModelResolverService, textFileService, editorService, fileService, labelService, filesConfigurationService, textResourceConfigurationService, customEditorLabelService);
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
67
|
PerfviewInput = PerfviewInput_1 = ( (__decorate([
|
|
@@ -75,7 +75,7 @@ PerfviewInput = PerfviewInput_1 = ( (__decorate([
|
|
|
75
75
|
( (__param(7, ICustomEditorLabelService)))
|
|
76
76
|
], PerfviewInput)));
|
|
77
77
|
let PerfModelContentProvider = class PerfModelContentProvider {
|
|
78
|
-
constructor(_modelService, _languageService, _editorService, _lifecycleService, _timerService, _extensionService, _productService, _terminalService) {
|
|
78
|
+
constructor(_modelService, _languageService, _editorService, _lifecycleService, _timerService, _extensionService, _productService, _remoteAgentService, _terminalService) {
|
|
79
79
|
this._modelService = _modelService;
|
|
80
80
|
this._languageService = _languageService;
|
|
81
81
|
this._editorService = _editorService;
|
|
@@ -83,6 +83,7 @@ let PerfModelContentProvider = class PerfModelContentProvider {
|
|
|
83
83
|
this._timerService = _timerService;
|
|
84
84
|
this._extensionService = _extensionService;
|
|
85
85
|
this._productService = _productService;
|
|
86
|
+
this._remoteAgentService = _remoteAgentService;
|
|
86
87
|
this._terminalService = _terminalService;
|
|
87
88
|
this._modelDisposables = [];
|
|
88
89
|
}
|
|
@@ -105,14 +106,13 @@ let PerfModelContentProvider = class PerfModelContentProvider {
|
|
|
105
106
|
this._timerService.whenReady(),
|
|
106
107
|
this._lifecycleService.when(4 ),
|
|
107
108
|
this._extensionService.whenInstalledExtensionsRegistered(),
|
|
108
|
-
this._terminalService.whenConnected
|
|
109
|
+
isWeb && !this._remoteAgentService.getConnection()?.remoteAuthority ? Promise.resolve() : this._terminalService.whenConnected
|
|
109
110
|
]).then(() => {
|
|
110
111
|
if (this._model && !this._model.isDisposed()) {
|
|
111
|
-
const stats = LoaderStats.get();
|
|
112
112
|
const md = ( (new MarkdownBuilder()));
|
|
113
113
|
this._addSummary(md);
|
|
114
114
|
md.blank();
|
|
115
|
-
this._addSummaryTable(md
|
|
115
|
+
this._addSummaryTable(md);
|
|
116
116
|
md.blank();
|
|
117
117
|
this._addExtensionsTable(md);
|
|
118
118
|
md.blank();
|
|
@@ -147,19 +147,20 @@ let PerfModelContentProvider = class PerfModelContentProvider {
|
|
|
147
147
|
md.li(`Screen Reader Active: ${metrics.hasAccessibilitySupport}`);
|
|
148
148
|
md.li(`Empty Workspace: ${metrics.emptyWorkbench}`);
|
|
149
149
|
}
|
|
150
|
-
_addSummaryTable(md
|
|
150
|
+
_addSummaryTable(md) {
|
|
151
151
|
const metrics = this._timerService.startupMetrics;
|
|
152
152
|
const contribTimings = ( (Registry.as(Extensions.Workbench))).timings;
|
|
153
153
|
const table = [];
|
|
154
154
|
table.push(['start => app.isReady', metrics.timers.ellapsedAppReady, '[main]', `initial startup: ${metrics.initialStartup}`]);
|
|
155
155
|
table.push(['nls:start => nls:end', metrics.timers.ellapsedNlsGeneration, '[main]', `initial startup: ${metrics.initialStartup}`]);
|
|
156
|
-
table.push(['import(main.
|
|
156
|
+
table.push(['import(main.js)', metrics.timers.ellapsedLoadMainBundle, '[main]', `initial startup: ${metrics.initialStartup}`]);
|
|
157
|
+
table.push(['run main.js', metrics.timers.ellapsedRunMainBundle, '[main]', `initial startup: ${metrics.initialStartup}`]);
|
|
157
158
|
table.push(['start crash reporter', metrics.timers.ellapsedCrashReporter, '[main]', `initial startup: ${metrics.initialStartup}`]);
|
|
158
159
|
table.push(['serve main IPC handle', metrics.timers.ellapsedMainServer, '[main]', `initial startup: ${metrics.initialStartup}`]);
|
|
159
160
|
table.push(['create window', metrics.timers.ellapsedWindowCreate, '[main]', `initial startup: ${metrics.initialStartup}, ${metrics.initialStartup ? `state: ${metrics.timers.ellapsedWindowRestoreState}ms, widget: ${metrics.timers.ellapsedBrowserWindowCreate}ms, show: ${metrics.timers.ellapsedWindowMaximize}ms` : ''}`]);
|
|
160
161
|
table.push(['app.isReady => window.loadUrl()', metrics.timers.ellapsedWindowLoad, '[main]', `initial startup: ${metrics.initialStartup}`]);
|
|
161
162
|
table.push(['window.loadUrl() => begin to import(workbench.desktop.main.js)', metrics.timers.ellapsedWindowLoadToRequire, '[main->renderer]', StartupKindToString(metrics.windowKind)]);
|
|
162
|
-
table.push(['import(workbench.desktop.main.js)', metrics.timers.ellapsedRequire, '[renderer]', `cached data: ${(metrics.didUseCachedData ? 'YES' : 'NO')}
|
|
163
|
+
table.push(['import(workbench.desktop.main.js)', metrics.timers.ellapsedRequire, '[renderer]', `cached data: ${(metrics.didUseCachedData ? 'YES' : 'NO')}`]);
|
|
163
164
|
table.push(['wait for window config', metrics.timers.ellapsedWaitForWindowConfig, '[renderer]', undefined]);
|
|
164
165
|
table.push(['init storage (global & workspace)', metrics.timers.ellapsedStorageInit, '[renderer]', undefined]);
|
|
165
166
|
table.push(['init workspace service', metrics.timers.ellapsedWorkspaceServiceInit, '[renderer]', undefined]);
|
|
@@ -248,46 +249,6 @@ let PerfModelContentProvider = class PerfModelContentProvider {
|
|
|
248
249
|
md.value += '```\n';
|
|
249
250
|
}
|
|
250
251
|
}
|
|
251
|
-
_addLoaderStats(md, stats) {
|
|
252
|
-
md.heading(2, 'Loader Stats');
|
|
253
|
-
md.heading(3, 'Load AMD-module');
|
|
254
|
-
md.table(['Module', 'Duration'], stats.amdLoad);
|
|
255
|
-
md.blank();
|
|
256
|
-
md.heading(3, 'Load commonjs-module');
|
|
257
|
-
md.table(['Module', 'Duration'], stats.nodeRequire);
|
|
258
|
-
md.blank();
|
|
259
|
-
md.heading(3, 'Invoke AMD-module factory');
|
|
260
|
-
md.table(['Module', 'Duration'], stats.amdInvoke);
|
|
261
|
-
md.blank();
|
|
262
|
-
md.heading(3, 'Invoke commonjs-module');
|
|
263
|
-
md.table(['Module', 'Duration'], stats.nodeEval);
|
|
264
|
-
}
|
|
265
|
-
_addCachedDataStats(md) {
|
|
266
|
-
const map = ( (new Map()));
|
|
267
|
-
map.set(63 , []);
|
|
268
|
-
map.set(60 , []);
|
|
269
|
-
map.set(61 , []);
|
|
270
|
-
map.set(62 , []);
|
|
271
|
-
const printLists = (arr) => {
|
|
272
|
-
if (arr) {
|
|
273
|
-
arr.sort();
|
|
274
|
-
for (const e of arr) {
|
|
275
|
-
md.li(`${e}`);
|
|
276
|
-
}
|
|
277
|
-
md.blank();
|
|
278
|
-
}
|
|
279
|
-
};
|
|
280
|
-
md.heading(2, 'Node Cached Data Stats');
|
|
281
|
-
md.blank();
|
|
282
|
-
md.heading(3, 'cached data used');
|
|
283
|
-
printLists(map.get(60 ));
|
|
284
|
-
md.heading(3, 'cached data missed');
|
|
285
|
-
printLists(map.get(61 ));
|
|
286
|
-
md.heading(3, 'cached data rejected');
|
|
287
|
-
printLists(map.get(62 ));
|
|
288
|
-
md.heading(3, 'cached data created (lazy, might need refreshes)');
|
|
289
|
-
printLists(map.get(63 ));
|
|
290
|
-
}
|
|
291
252
|
_addResourceTimingStats(md) {
|
|
292
253
|
const stats = ( (performance.getEntriesByType('resource').map(entry => {
|
|
293
254
|
return [entry.name, entry.duration];
|
|
@@ -307,7 +268,8 @@ PerfModelContentProvider = ( (__decorate([
|
|
|
307
268
|
( (__param(4, ITimerService))),
|
|
308
269
|
( (__param(5, IExtensionService))),
|
|
309
270
|
( (__param(6, IProductService))),
|
|
310
|
-
( (__param(7,
|
|
271
|
+
( (__param(7, IRemoteAgentService))),
|
|
272
|
+
( (__param(8, ITerminalService)))
|
|
311
273
|
], PerfModelContentProvider)));
|
|
312
274
|
class MarkdownBuilder {
|
|
313
275
|
constructor() {
|
|
@@ -326,7 +288,36 @@ class MarkdownBuilder {
|
|
|
326
288
|
return this;
|
|
327
289
|
}
|
|
328
290
|
table(header, rows) {
|
|
329
|
-
this.value +=
|
|
291
|
+
this.value += this.toMarkdownTable(header, rows);
|
|
292
|
+
}
|
|
293
|
+
toMarkdownTable(header, rows) {
|
|
294
|
+
let result = '';
|
|
295
|
+
const lengths = [];
|
|
296
|
+
header.forEach((cell, ci) => {
|
|
297
|
+
lengths[ci] = cell.length;
|
|
298
|
+
});
|
|
299
|
+
rows.forEach(row => {
|
|
300
|
+
row.forEach((cell, ci) => {
|
|
301
|
+
if (typeof cell === 'undefined') {
|
|
302
|
+
cell = row[ci] = '-';
|
|
303
|
+
}
|
|
304
|
+
const len = ( (cell.toString())).length;
|
|
305
|
+
lengths[ci] = Math.max(len, lengths[ci]);
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
header.forEach((cell, ci) => { result += `| ${cell + ' '.repeat(lengths[ci] - ( (cell.toString())).length)} `; });
|
|
309
|
+
result += '|\n';
|
|
310
|
+
header.forEach((_cell, ci) => { result += `| ${'-'.repeat(lengths[ci])} `; });
|
|
311
|
+
result += '|\n';
|
|
312
|
+
rows.forEach(row => {
|
|
313
|
+
row.forEach((cell, ci) => {
|
|
314
|
+
if (typeof cell !== 'undefined') {
|
|
315
|
+
result += `| ${cell + ' '.repeat(lengths[ci] - ( (cell.toString())).length)} `;
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
result += '|\n';
|
|
319
|
+
});
|
|
320
|
+
return result;
|
|
330
321
|
}
|
|
331
322
|
}
|
|
332
323
|
|