Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973 (#6381)

* Merge from vscode 8e0f348413f4f616c23a88ae30030efa85811973

* disable strict null check
This commit is contained in:
Anthony Dresser
2019-07-15 22:35:46 -07:00
committed by GitHub
parent f720ec642f
commit 0b7e7ddbf9
2406 changed files with 59140 additions and 35464 deletions

View File

@@ -20,7 +20,6 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService';
import { writeTransientState } from 'vs/workbench/contrib/codeEditor/browser/toggleWordWrap';
import { mergeSort } from 'vs/base/common/arrays';
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
import product from 'vs/platform/product/node/product';
import pkg from 'vs/platform/product/node/package';
@@ -50,7 +49,7 @@ export class PerfviewInput extends ResourceEditorInput {
) {
super(
localize('name', "Startup Performance"),
null,
undefined,
PerfviewInput.Uri,
undefined,
textModelResolverService
@@ -73,7 +72,6 @@ class PerfModelContentProvider implements ITextModelContentProvider {
@ICodeEditorService private readonly _editorService: ICodeEditorService,
@ILifecycleService private readonly _lifecycleService: ILifecycleService,
@ITimerService private readonly _timerService: ITimerService,
@IEnvironmentService private readonly _envService: IEnvironmentService,
@IExtensionService private readonly _extensionService: IExtensionService,
) { }
@@ -107,7 +105,7 @@ class PerfModelContentProvider implements ITextModelContentProvider {
]).then(([metrics]) => {
if (this._model && !this._model.isDisposed()) {
let stats = this._envService.args['prof-modules'] ? LoaderStats.get() : undefined;
let stats = LoaderStats.get();
let md = new MarkdownBuilder();
this._addSummary(md, metrics);
md.blank();
@@ -118,6 +116,8 @@ class PerfModelContentProvider implements ITextModelContentProvider {
this._addRawPerfMarks(md);
md.blank();
this._addLoaderStats(md, stats);
md.blank();
this._addCachedDataStats(md);
this._model.setValue(md.value);
}
@@ -136,7 +136,7 @@ class PerfModelContentProvider implements ITextModelContentProvider {
md.li(`Memory(System): ${(metrics.totalmem / (1024 * 1024 * 1024)).toFixed(2)} GB(${(metrics.freemem / (1024 * 1024 * 1024)).toFixed(2)}GB free)`);
}
if (metrics.meminfo) {
md.li(`Memory(Process): ${(metrics.meminfo.workingSetSize / 1024).toFixed(2)} MB working set(${(metrics.meminfo.peakWorkingSetSize / 1024).toFixed(2)}MB peak, ${(metrics.meminfo.privateBytes / 1024).toFixed(2)}MB private, ${(metrics.meminfo.sharedBytes / 1024).toFixed(2)}MB shared)`);
md.li(`Memory(Process): ${(metrics.meminfo.workingSetSize / 1024).toFixed(2)} MB working set(${(metrics.meminfo.privateBytes / 1024).toFixed(2)}MB private, ${(metrics.meminfo.sharedBytes / 1024).toFixed(2)}MB shared)`);
}
md.li(`VM(likelyhood): ${metrics.isVMLikelyhood}%`);
md.li(`Initial Startup: ${metrics.initialStartup}`);
@@ -210,21 +210,54 @@ class PerfModelContentProvider implements ITextModelContentProvider {
md.value += '```\n';
}
private _addLoaderStats(md: MarkdownBuilder, stats?: LoaderStats): void {
if (stats) {
md.heading(2, 'Loader Stats');
md.heading(3, 'Load AMD-module');
md.table(['Module', 'Duration'], stats.amdLoad);
md.blank();
md.heading(3, 'Load commonjs-module');
md.table(['Module', 'Duration'], stats.nodeRequire);
md.blank();
md.heading(3, 'Invoke AMD-module factory');
md.table(['Module', 'Duration'], stats.amdInvoke);
md.blank();
md.heading(3, 'Invoke commonjs-module');
md.table(['Module', 'Duration'], stats.nodeEval);
private _addLoaderStats(md: MarkdownBuilder, stats: LoaderStats): void {
md.heading(2, 'Loader Stats');
md.heading(3, 'Load AMD-module');
md.table(['Module', 'Duration'], stats.amdLoad);
md.blank();
md.heading(3, 'Load commonjs-module');
md.table(['Module', 'Duration'], stats.nodeRequire);
md.blank();
md.heading(3, 'Invoke AMD-module factory');
md.table(['Module', 'Duration'], stats.amdInvoke);
md.blank();
md.heading(3, 'Invoke commonjs-module');
md.table(['Module', 'Duration'], stats.nodeEval);
}
private _addCachedDataStats(md: MarkdownBuilder): void {
const map = new Map<LoaderEventType, string[]>();
map.set(LoaderEventType.CachedDataCreated, []);
map.set(LoaderEventType.CachedDataFound, []);
map.set(LoaderEventType.CachedDataMissed, []);
map.set(LoaderEventType.CachedDataRejected, []);
for (const stat of require.getStats()) {
if (map.has(stat.type)) {
map.get(stat.type)!.push(stat.detail);
}
}
const printLists = (arr?: string[]) => {
if (arr) {
arr.sort();
for (const e of arr) {
md.li(`${e}`);
}
md.blank();
}
};
md.heading(2, 'Node Cached Data Stats');
md.blank();
md.heading(3, 'cached data used');
printLists(map.get(LoaderEventType.CachedDataFound));
md.heading(3, 'cached data missed');
printLists(map.get(LoaderEventType.CachedDataMissed));
md.heading(3, 'cached data rejected');
printLists(map.get(LoaderEventType.CachedDataRejected));
md.heading(3, 'cached data created (lazy, might need refreshes)');
printLists(map.get(LoaderEventType.CachedDataCreated));
}
}

View File

@@ -103,21 +103,19 @@ export class StartupProfiler implements IWorkbenchContribution {
});
}
private _createPerfIssue(files: string[]): Promise<void> {
return this._textModelResolverService.createModelReference(PerfviewInput.Uri).then(ref => {
private async _createPerfIssue(files: string[]): Promise<void> {
const ref = await this._textModelResolverService.createModelReference(PerfviewInput.Uri);
await this._clipboardService.writeText(ref.object.textEditorModel.getValue());
ref.dispose();
this._clipboardService.writeText(ref.object.textEditorModel.getValue());
ref.dispose();
const body = `
const body = `
1. :warning: We have copied additional data to your clipboard. Make sure to **paste** here. :warning:
1. :warning: Make sure to **attach** these files from your *home*-directory: :warning:\n${files.map(file => `-\`${file}\``).join('\n')}
`;
const baseUrl = product.reportIssueUrl;
const queryStringPrefix = baseUrl.indexOf('?') === -1 ? '?' : '&';
const baseUrl = product.reportIssueUrl;
const queryStringPrefix = baseUrl.indexOf('?') === -1 ? '?' : '&';
window.open(`${baseUrl}${queryStringPrefix}body=${encodeURIComponent(body)}`);
});
window.open(`${baseUrl}${queryStringPrefix}body=${encodeURIComponent(body)}`);
}
}