Compare commits

...

1 Commits

Author SHA1 Message Date
EYHN
5b73df094f feat(core): add more performance metrics 2025-04-18 14:32:24 +08:00
3 changed files with 27 additions and 7 deletions

View File

@@ -511,15 +511,17 @@ export class DataStruct {
async measure(name: string) {
const count = debugMarkCount++;
performance.mark(`${name}Start(${count})`);
performance.mark(`[idb-indexer]${name}Start(${count})`);
return {
[Symbol.dispose]: () => {
performance.mark(`${name}End(${count})`);
performance.measure(
`${name}`,
`${name}Start(${count})`,
`${name}End(${count})`
);
performance.measure(`${name}`, {
start: `[idb-indexer]${name}Start(${count})`,
detail: {
devtools: {
track: '[idb-indexer]',
},
},
});
},
};
}

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', () => {

View File

@@ -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)