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');
|
||||
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)
|
||||
|
||||
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 { IBackupMainService } from 'vs/platform/backup/common/backup';
|
||||
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';
|
||||
|
||||
export interface IWindowCreationOptions {
|
||||
|
@ -547,7 +547,7 @@ export class CodeWindow implements ICodeWindow {
|
|||
}
|
||||
|
||||
// Load URL
|
||||
mark('main:loadWindow');
|
||||
perf.mark('main:loadWindow');
|
||||
this._win.loadURL(this.getUrl(configuration));
|
||||
|
||||
// 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.frameless = this.hasHiddenTitleBarStyle() && !isMacintosh;
|
||||
|
||||
// Perf Counters
|
||||
windowConfiguration.perfEntries = exportEntries();
|
||||
windowConfiguration.perfStartTime = (<any>global).perfStartTime;
|
||||
windowConfiguration.perfWindowLoadTime = Date.now();
|
||||
// Dump Perf Counters
|
||||
windowConfiguration.perfEntries = perf.exportEntries();
|
||||
|
||||
// Config (combination of process.argv and window configuration)
|
||||
const environment = parseArgs(process.argv);
|
||||
|
|
|
@ -346,9 +346,6 @@ export interface IWindowConfiguration extends ParsedArgs, IOpenFileRequest {
|
|||
accessibilitySupport?: boolean;
|
||||
|
||||
perfEntries: PerformanceEntry[];
|
||||
perfStartTime?: number;
|
||||
perfAppReady?: number;
|
||||
perfWindowLoadTime?: number;
|
||||
}
|
||||
|
||||
export interface IRunActionInWindowRequest {
|
||||
|
@ -389,4 +386,4 @@ export class ActiveWindowManager implements IDisposable {
|
|||
dispose() {
|
||||
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');
|
||||
require([
|
||||
'vs/workbench/workbench.main',
|
||||
|
|
|
@ -24,7 +24,7 @@ import { ServiceCollection } from 'vs/platform/instantiation/common/serviceColle
|
|||
import { realpath } from 'vs/base/node/pfs';
|
||||
import { EnvironmentService } from 'vs/platform/environment/node/environmentService';
|
||||
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 { IWindowConfiguration, IWindowsService } from 'vs/platform/windows/common/windows';
|
||||
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
|
||||
// right before startup of the workbench shell to have its data ready for consumers
|
||||
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);
|
||||
|
||||
return domContentLoaded().then(() => {
|
||||
|
|
|
@ -8,13 +8,9 @@ import { ITimerService, IStartupMetrics, IMemoryInfo } from 'vs/workbench/servic
|
|||
import { virtualMachineHint } from 'vs/base/node/id';
|
||||
import * as perf from 'vs/base/common/performance';
|
||||
import * as os from 'os';
|
||||
|
||||
export interface IInitData {
|
||||
start: number;
|
||||
windowLoad: number;
|
||||
isInitialStartup: boolean;
|
||||
hasAccessibilitySupport: boolean;
|
||||
}
|
||||
import { getAccessibilitySupport } from 'vs/base/browser/browser';
|
||||
import { AccessibilitySupport } from 'vs/base/common/platform';
|
||||
import { IWindowConfiguration } from 'vs/platform/windows/common/windows';
|
||||
|
||||
export class TimerService implements ITimerService {
|
||||
|
||||
|
@ -23,7 +19,7 @@ export class TimerService implements ITimerService {
|
|||
private _startupMetrics: IStartupMetrics;
|
||||
|
||||
constructor(
|
||||
private readonly _initData: IInitData,
|
||||
private readonly _configuration: IWindowConfiguration,
|
||||
private readonly _isEmptyWorkbench: boolean
|
||||
) {
|
||||
//
|
||||
|
@ -38,8 +34,8 @@ export class TimerService implements ITimerService {
|
|||
|
||||
public _computeStartupMetrics(): void {
|
||||
const now = Date.now();
|
||||
const initialStartup = !!this._initData.isInitialStartup;
|
||||
const start = initialStartup ? this._initData.start : this._initData.windowLoad;
|
||||
const initialStartup = !!this._configuration.isInitialStartup;
|
||||
const startMark = initialStartup ? 'main:started' : 'main:loadWindow';
|
||||
|
||||
let totalmem: number;
|
||||
let freemem: number;
|
||||
|
@ -72,7 +68,7 @@ export class TimerService implements ITimerService {
|
|||
|
||||
this._startupMetrics = {
|
||||
version: 1,
|
||||
ellapsed: perf.getEntry('mark', 'didStartWorkbench').startTime - start,
|
||||
ellapsed: perf.getDuration(startMark, 'didStartWorkbench'),
|
||||
timers: {
|
||||
ellapsedAppReady: initialStartup ? perf.getDuration('main:started', 'main:appReady') : undefined,
|
||||
ellapsedNlsGeneration: perf.getDuration('nlsGeneration:start', 'nlsGeneration:end'),
|
||||
|
@ -83,7 +79,7 @@ export class TimerService implements ITimerService {
|
|||
ellapsedEditorRestore: perf.getDuration('willRestoreEditors', 'didRestoreEditors'),
|
||||
ellapsedViewletRestore: perf.getDuration('willRestoreViewlet', 'didRestoreViewlet'),
|
||||
ellapsedWorkbench: perf.getDuration('willStartWorkbench', 'didStartWorkbench'),
|
||||
ellapsedExtensionsReady: perf.getEntry('mark', 'didLoadExtensions').startTime - start,
|
||||
ellapsedExtensionsReady: perf.getDuration(startMark, 'didLoadExtensions'),
|
||||
ellapsedTimersToTimersComputed: Date.now() - now,
|
||||
},
|
||||
platform,
|
||||
|
@ -96,7 +92,7 @@ export class TimerService implements ITimerService {
|
|||
loadavg,
|
||||
initialStartup,
|
||||
isVMLikelyhood,
|
||||
hasAccessibilitySupport: !!this._initData.hasAccessibilitySupport,
|
||||
hasAccessibilitySupport: getAccessibilitySupport() === AccessibilitySupport.Enabled,
|
||||
emptyWorkbench: this._isEmptyWorkbench
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue