debt - remove last usages of globals and any-casts when it comes to perf marks
This commit is contained in:
parent
1b5c9925d7
commit
4944cc2847
|
@ -7,9 +7,6 @@
|
||||||
const perf = require('./vs/base/common/performance');
|
const perf = require('./vs/base/common/performance');
|
||||||
perf.mark('main:started');
|
perf.mark('main:started');
|
||||||
|
|
||||||
// Perf measurements
|
|
||||||
global.perfStartTime = Date.now();
|
|
||||||
|
|
||||||
Error.stackTraceLimit = 100; // increase number of stack frames (from 10, https://github.com/v8/v8/wiki/Stack-Trace-API)
|
Error.stackTraceLimit = 100; // increase number of stack frames (from 10, https://github.com/v8/v8/wiki/Stack-Trace-API)
|
||||||
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
|
|
@ -24,7 +24,7 @@ import { ICodeWindow, IWindowState, WindowMode } from 'vs/platform/windows/elect
|
||||||
import { IWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces';
|
import { IWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/common/workspaces';
|
||||||
import { IBackupMainService } from 'vs/platform/backup/common/backup';
|
import { IBackupMainService } from 'vs/platform/backup/common/backup';
|
||||||
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
|
||||||
import { mark, exportEntries } from 'vs/base/common/performance';
|
import * as perf from 'vs/base/common/performance';
|
||||||
import { resolveMarketplaceHeaders } from 'vs/platform/extensionManagement/node/extensionGalleryService';
|
import { resolveMarketplaceHeaders } from 'vs/platform/extensionManagement/node/extensionGalleryService';
|
||||||
|
|
||||||
export interface IWindowCreationOptions {
|
export interface IWindowCreationOptions {
|
||||||
|
@ -547,7 +547,7 @@ export class CodeWindow implements ICodeWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load URL
|
// Load URL
|
||||||
mark('main:loadWindow');
|
perf.mark('main:loadWindow');
|
||||||
this._win.loadURL(this.getUrl(configuration));
|
this._win.loadURL(this.getUrl(configuration));
|
||||||
|
|
||||||
// Make window visible if it did not open in N seconds because this indicates an error
|
// Make window visible if it did not open in N seconds because this indicates an error
|
||||||
|
@ -621,10 +621,8 @@ export class CodeWindow implements ICodeWindow {
|
||||||
windowConfiguration.maximized = this._win.isMaximized();
|
windowConfiguration.maximized = this._win.isMaximized();
|
||||||
windowConfiguration.frameless = this.hasHiddenTitleBarStyle() && !isMacintosh;
|
windowConfiguration.frameless = this.hasHiddenTitleBarStyle() && !isMacintosh;
|
||||||
|
|
||||||
// Perf Counters
|
// Dump Perf Counters
|
||||||
windowConfiguration.perfEntries = exportEntries();
|
windowConfiguration.perfEntries = perf.exportEntries();
|
||||||
windowConfiguration.perfStartTime = (<any>global).perfStartTime;
|
|
||||||
windowConfiguration.perfWindowLoadTime = Date.now();
|
|
||||||
|
|
||||||
// Config (combination of process.argv and window configuration)
|
// Config (combination of process.argv and window configuration)
|
||||||
const environment = parseArgs(process.argv);
|
const environment = parseArgs(process.argv);
|
||||||
|
|
|
@ -346,9 +346,6 @@ export interface IWindowConfiguration extends ParsedArgs, IOpenFileRequest {
|
||||||
accessibilitySupport?: boolean;
|
accessibilitySupport?: boolean;
|
||||||
|
|
||||||
perfEntries: PerformanceEntry[];
|
perfEntries: PerformanceEntry[];
|
||||||
perfStartTime?: number;
|
|
||||||
perfAppReady?: number;
|
|
||||||
perfWindowLoadTime?: number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IRunActionInWindowRequest {
|
export interface IRunActionInWindowRequest {
|
||||||
|
@ -389,4 +386,4 @@ export class ActiveWindowManager implements IDisposable {
|
||||||
dispose() {
|
dispose() {
|
||||||
this.disposables = dispose(this.disposables);
|
this.disposables = dispose(this.disposables);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -306,14 +306,6 @@ function main() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Perf Counters
|
|
||||||
window.MonacoEnvironment.timers = {
|
|
||||||
isInitialStartup: !!configuration.isInitialStartup,
|
|
||||||
hasAccessibilitySupport: !!configuration.accessibilitySupport,
|
|
||||||
start: configuration.perfStartTime,
|
|
||||||
windowLoad: configuration.perfWindowLoadTime
|
|
||||||
};
|
|
||||||
|
|
||||||
perf.mark('willLoadWorkbenchMain');
|
perf.mark('willLoadWorkbenchMain');
|
||||||
require([
|
require([
|
||||||
'vs/workbench/workbench.main',
|
'vs/workbench/workbench.main',
|
||||||
|
|
|
@ -24,7 +24,7 @@ import { ServiceCollection } from 'vs/platform/instantiation/common/serviceColle
|
||||||
import { realpath } from 'vs/base/node/pfs';
|
import { realpath } from 'vs/base/node/pfs';
|
||||||
import { EnvironmentService } from 'vs/platform/environment/node/environmentService';
|
import { EnvironmentService } from 'vs/platform/environment/node/environmentService';
|
||||||
import * as gracefulFs from 'graceful-fs';
|
import * as gracefulFs from 'graceful-fs';
|
||||||
import { TimerService, IInitData } from 'vs/workbench/services/timer/node/timerService';
|
import { TimerService } from 'vs/workbench/services/timer/electron-browser/timerService';
|
||||||
import { KeyboardMapperFactory } from 'vs/workbench/services/keybinding/electron-browser/keybindingService';
|
import { KeyboardMapperFactory } from 'vs/workbench/services/keybinding/electron-browser/keybindingService';
|
||||||
import { IWindowConfiguration, IWindowsService } from 'vs/platform/windows/common/windows';
|
import { IWindowConfiguration, IWindowsService } from 'vs/platform/windows/common/windows';
|
||||||
import { WindowsChannelClient } from 'vs/platform/windows/common/windowsIpc';
|
import { WindowsChannelClient } from 'vs/platform/windows/common/windowsIpc';
|
||||||
|
@ -85,7 +85,7 @@ function openWorkbench(configuration: IWindowConfiguration): TPromise<void> {
|
||||||
// Since the configuration service is one of the core services that is used in so many places, we initialize it
|
// Since the configuration service is one of the core services that is used in so many places, we initialize it
|
||||||
// right before startup of the workbench shell to have its data ready for consumers
|
// right before startup of the workbench shell to have its data ready for consumers
|
||||||
return createAndInitializeWorkspaceService(configuration, environmentService).then(workspaceService => {
|
return createAndInitializeWorkspaceService(configuration, environmentService).then(workspaceService => {
|
||||||
const timerService = new TimerService((<any>window).MonacoEnvironment.timers as IInitData, workspaceService.getWorkbenchState() === WorkbenchState.EMPTY);
|
const timerService = new TimerService(configuration, workspaceService.getWorkbenchState() === WorkbenchState.EMPTY);
|
||||||
const storageService = createStorageService(workspaceService, environmentService);
|
const storageService = createStorageService(workspaceService, environmentService);
|
||||||
|
|
||||||
return domContentLoaded().then(() => {
|
return domContentLoaded().then(() => {
|
||||||
|
|
|
@ -8,13 +8,9 @@ import { ITimerService, IStartupMetrics, IMemoryInfo } from 'vs/workbench/servic
|
||||||
import { virtualMachineHint } from 'vs/base/node/id';
|
import { virtualMachineHint } from 'vs/base/node/id';
|
||||||
import * as perf from 'vs/base/common/performance';
|
import * as perf from 'vs/base/common/performance';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
|
import { getAccessibilitySupport } from 'vs/base/browser/browser';
|
||||||
export interface IInitData {
|
import { AccessibilitySupport } from 'vs/base/common/platform';
|
||||||
start: number;
|
import { IWindowConfiguration } from 'vs/platform/windows/common/windows';
|
||||||
windowLoad: number;
|
|
||||||
isInitialStartup: boolean;
|
|
||||||
hasAccessibilitySupport: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export class TimerService implements ITimerService {
|
export class TimerService implements ITimerService {
|
||||||
|
|
||||||
|
@ -23,7 +19,7 @@ export class TimerService implements ITimerService {
|
||||||
private _startupMetrics: IStartupMetrics;
|
private _startupMetrics: IStartupMetrics;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly _initData: IInitData,
|
private readonly _configuration: IWindowConfiguration,
|
||||||
private readonly _isEmptyWorkbench: boolean
|
private readonly _isEmptyWorkbench: boolean
|
||||||
) {
|
) {
|
||||||
//
|
//
|
||||||
|
@ -38,8 +34,8 @@ export class TimerService implements ITimerService {
|
||||||
|
|
||||||
public _computeStartupMetrics(): void {
|
public _computeStartupMetrics(): void {
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
const initialStartup = !!this._initData.isInitialStartup;
|
const initialStartup = !!this._configuration.isInitialStartup;
|
||||||
const start = initialStartup ? this._initData.start : this._initData.windowLoad;
|
const startMark = initialStartup ? 'main:started' : 'main:loadWindow';
|
||||||
|
|
||||||
let totalmem: number;
|
let totalmem: number;
|
||||||
let freemem: number;
|
let freemem: number;
|
||||||
|
@ -72,7 +68,7 @@ export class TimerService implements ITimerService {
|
||||||
|
|
||||||
this._startupMetrics = {
|
this._startupMetrics = {
|
||||||
version: 1,
|
version: 1,
|
||||||
ellapsed: perf.getEntry('mark', 'didStartWorkbench').startTime - start,
|
ellapsed: perf.getDuration(startMark, 'didStartWorkbench'),
|
||||||
timers: {
|
timers: {
|
||||||
ellapsedAppReady: initialStartup ? perf.getDuration('main:started', 'main:appReady') : undefined,
|
ellapsedAppReady: initialStartup ? perf.getDuration('main:started', 'main:appReady') : undefined,
|
||||||
ellapsedNlsGeneration: perf.getDuration('nlsGeneration:start', 'nlsGeneration:end'),
|
ellapsedNlsGeneration: perf.getDuration('nlsGeneration:start', 'nlsGeneration:end'),
|
||||||
|
@ -83,7 +79,7 @@ export class TimerService implements ITimerService {
|
||||||
ellapsedEditorRestore: perf.getDuration('willRestoreEditors', 'didRestoreEditors'),
|
ellapsedEditorRestore: perf.getDuration('willRestoreEditors', 'didRestoreEditors'),
|
||||||
ellapsedViewletRestore: perf.getDuration('willRestoreViewlet', 'didRestoreViewlet'),
|
ellapsedViewletRestore: perf.getDuration('willRestoreViewlet', 'didRestoreViewlet'),
|
||||||
ellapsedWorkbench: perf.getDuration('willStartWorkbench', 'didStartWorkbench'),
|
ellapsedWorkbench: perf.getDuration('willStartWorkbench', 'didStartWorkbench'),
|
||||||
ellapsedExtensionsReady: perf.getEntry('mark', 'didLoadExtensions').startTime - start,
|
ellapsedExtensionsReady: perf.getDuration(startMark, 'didLoadExtensions'),
|
||||||
ellapsedTimersToTimersComputed: Date.now() - now,
|
ellapsedTimersToTimersComputed: Date.now() - now,
|
||||||
},
|
},
|
||||||
platform,
|
platform,
|
||||||
|
@ -96,7 +92,7 @@ export class TimerService implements ITimerService {
|
||||||
loadavg,
|
loadavg,
|
||||||
initialStartup,
|
initialStartup,
|
||||||
isVMLikelyhood,
|
isVMLikelyhood,
|
||||||
hasAccessibilitySupport: !!this._initData.hasAccessibilitySupport,
|
hasAccessibilitySupport: getAccessibilitySupport() === AccessibilitySupport.Enabled,
|
||||||
emptyWorkbench: this._isEmptyWorkbench
|
emptyWorkbench: this._isEmptyWorkbench
|
||||||
};
|
};
|
||||||
}
|
}
|
Loading…
Reference in a new issue