feat(core): add more performance metrics

This commit is contained in:
EYHN
2025-04-18 14:32:24 +08:00
parent 203e931e30
commit 5b73df094f
3 changed files with 27 additions and 7 deletions
+16
View File
@@ -26,6 +26,8 @@ let storeManagerClient: StoreManagerClient;
const workerUrl = getWorkerUrl('nbstore');
performance.mark('worker:connect');
if (
window.SharedWorker &&
localStorage.getItem('disableSharedWorker') !== 'true'
@@ -33,9 +35,23 @@ if (
const worker = new SharedWorker(workerUrl, {
name: 'affine-shared-worker',
});
const connectHandler = (message: MessageEvent) => {
if (message.data === 'connected') {
performance.measure('worker:connected', 'worker:connect');
worker.port.removeEventListener('message', connectHandler);
}
};
worker.port.addEventListener('message', connectHandler);
storeManagerClient = new StoreManagerClient(new OpClient(worker.port));
} else {
const worker = new Worker(workerUrl);
const connectHandler = (message: MessageEvent) => {
if (message.data === 'connected') {
performance.measure('worker:connected', 'worker:connect');
worker.removeEventListener('message', connectHandler);
}
};
worker.addEventListener('message', connectHandler);
storeManagerClient = new StoreManagerClient(new OpClient(worker));
}
window.addEventListener('beforeunload', () => {
@@ -22,9 +22,11 @@ if ('onconnect' in globalThis) {
(globalThis as any).onconnect = (event: MessageEvent) => {
const port = event.ports[0];
port.postMessage('connected');
consumer.bindConsumer(new OpConsumer<WorkerManagerOps>(port));
};
} else {
globalThis.postMessage('connected');
// if in worker
consumer.bindConsumer(
new OpConsumer<WorkerManagerOps>(globalThis as MessageCommunicapable)