Merge from vscode 81d7885dc2e9dc617e1522697a2966bc4025a45d (#5949)

* Merge from vscode 81d7885dc2e9dc617e1522697a2966bc4025a45d

* Fix vs unit tests and hygiene issue

* Fix strict null check issue
This commit is contained in:
Chris LaFreniere
2019-06-10 18:27:09 -07:00
committed by GitHub
parent ff38bc8143
commit d15a3fcc98
926 changed files with 19529 additions and 11383 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';
@@ -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));
}
}