Skip to content

Commit edd044c

Browse files
committed
add more perf marks for workbench initialization
1 parent 30730ef commit edd044c

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

src/vs/platform/files/browser/indexedDBFileSystemProvider.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { VSBuffer } from 'vs/base/common/buffer';
88
import { getErrorMessage } from 'vs/base/common/errors';
99
import { Emitter, Event } from 'vs/base/common/event';
1010
import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
11+
import { mark } from 'vs/base/common/performance';
1112
import { joinPath } from 'vs/base/common/resources';
1213
import { isString } from 'vs/base/common/types';
1314
import { URI, UriComponents } from 'vs/base/common/uri';
@@ -38,7 +39,9 @@ export class IndexedDB {
3839
private indexedDBPromise: Promise<IDBDatabase | null>;
3940

4041
constructor() {
42+
mark('code/willOpenWebDB');
4143
this.indexedDBPromise = this.openIndexedDB(INDEXEDDB_VSCODE_DB, 2, [INDEXEDDB_USERDATA_OBJECT_STORE, INDEXEDDB_LOGS_OBJECT_STORE]);
44+
this.indexedDBPromise.finally(() => mark('code/didOpenWebDB'));
4245
}
4346

4447
async createFileSystemProvider(scheme: string, store: string, watchCrossWindowChanges: boolean): Promise<IIndexedDBFileSystemProvider | null> {

src/vs/platform/storage/common/storage.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import { Promises, RunOnceScheduler, runWhenIdle } from 'vs/base/common/async';
77
import { Emitter, Event, PauseableEmitter } from 'vs/base/common/event';
88
import { Disposable, dispose, MutableDisposable } from 'vs/base/common/lifecycle';
9+
import { mark } from 'vs/base/common/performance';
910
import { isUndefinedOrNull } from 'vs/base/common/types';
1011
import { InMemoryStorageDatabase, IStorage, Storage } from 'vs/base/parts/storage/common/storage';
1112
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
@@ -271,8 +272,14 @@ export abstract class AbstractStorageService extends Disposable implements IStor
271272
if (!this.initializationPromise) {
272273
this.initializationPromise = (async () => {
273274

274-
// Ask subclasses to initialize storage
275-
await this.doInitialize();
275+
// Init all storage locations
276+
mark('code/willInitStorage');
277+
try {
278+
// Ask subclasses to initialize storage
279+
await this.doInitialize();
280+
} finally {
281+
mark('code/didInitStorage');
282+
}
276283

277284
// On some OS we do not get enough time to persist state on shutdown (e.g. when
278285
// Windows restarts after applying updates). In other cases, VSCode might crash,

src/vs/platform/storage/electron-sandbox/storageService.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import { Promises } from 'vs/base/common/async';
77
import { MutableDisposable } from 'vs/base/common/lifecycle';
8-
import { mark } from 'vs/base/common/performance';
98
import { joinPath } from 'vs/base/common/resources';
109
import { IStorage, Storage } from 'vs/base/parts/storage/common/storage';
1110
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
@@ -67,17 +66,11 @@ export class NativeStorageService extends AbstractStorageService {
6766
}
6867

6968
protected async doInitialize(): Promise<void> {
70-
7169
// Init all storage locations
72-
mark('code/willInitStorage');
73-
try {
74-
await Promises.settled([
75-
this.globalStorage.init(),
76-
this.workspaceStorage?.init() ?? Promise.resolve()
77-
]);
78-
} finally {
79-
mark('code/didInitStorage');
80-
}
70+
await Promises.settled([
71+
this.globalStorage.init(),
72+
this.workspaceStorage?.init() ?? Promise.resolve()
73+
]);
8174
}
8275

8376
protected getStorage(scope: StorageScope): IStorage | undefined {

src/vs/workbench/services/configuration/browser/configurationService.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,8 +558,13 @@ export class WorkspaceService extends Disposable implements IWorkbenchConfigurat
558558
}
559559

560560
private async initializeConfiguration(): Promise<void> {
561+
mark('code/willInitUserConfiguration');
561562
const { local, remote } = await this.initializeUserConfiguration();
563+
mark('code/didInitUserConfiguration');
564+
565+
mark('code/willInitWorkspaceConfiguration');
562566
await this.loadConfiguration(local, remote);
567+
mark('code/didInitWorkspaceConfiguration');
563568
}
564569

565570
private async initializeUserConfiguration(): Promise<{ local: ConfigurationModel, remote: ConfigurationModel }> {

0 commit comments

Comments
 (0)