mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-19 07:17:00 +08:00
refactor: cleanup code
This commit is contained in:
@@ -1 +0,0 @@
|
||||
This benchmark is outdated because our new API for IndexedDB has no direct parity with the official provider.
|
||||
@@ -1,113 +0,0 @@
|
||||
#!/usr/bin/env ts-node-esm
|
||||
import 'fake-indexeddb/auto';
|
||||
|
||||
const map = new Map();
|
||||
const localStorage = {
|
||||
getItem: (key: string) => map.get(key),
|
||||
setItem: (key: string, value: string) => map.set(key, value),
|
||||
clear: () => map.clear(),
|
||||
};
|
||||
|
||||
// @ts-expect-error
|
||||
globalThis.localStorage = localStorage;
|
||||
|
||||
import { Workspace } from '@blocksuite/store';
|
||||
import { IndexeddbPersistence } from 'y-indexeddb';
|
||||
|
||||
const Y = Workspace.Y;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
|
||||
import { createIndexedDBProvider } from '../dist/index.js';
|
||||
|
||||
// @ts-expect-error
|
||||
globalThis.window = {
|
||||
addEventListener: () => void 0,
|
||||
removeEventListener: () => void 0,
|
||||
};
|
||||
|
||||
async function yjs_create_persistence(n = 1e3) {
|
||||
for (let i = 0; i < n; i++) {
|
||||
const yDoc = new Y.Doc();
|
||||
const persistence = new IndexeddbPersistence('test', yDoc);
|
||||
await persistence.whenSynced;
|
||||
persistence.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
async function yjs_single_persistence(n = 1e5) {
|
||||
const yDoc = new Y.Doc();
|
||||
const map = yDoc.getMap();
|
||||
for (let i = 0; i < n; i++) {
|
||||
map.set(`${i}`, i);
|
||||
}
|
||||
{
|
||||
const persistence = new IndexeddbPersistence('test', yDoc);
|
||||
await persistence.whenSynced;
|
||||
persistence.destroy();
|
||||
}
|
||||
{
|
||||
const persistence = new IndexeddbPersistence('test', yDoc);
|
||||
await persistence.whenSynced;
|
||||
persistence.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
async function toeverything_create_provider(n = 1e3) {
|
||||
for (let i = 0; i < n; i++) {
|
||||
const yDoc = new Y.Doc({
|
||||
guid: 'test',
|
||||
});
|
||||
const provider = createIndexedDBProvider(yDoc);
|
||||
provider.connect();
|
||||
await provider.whenSynced;
|
||||
provider.disconnect();
|
||||
}
|
||||
}
|
||||
async function toeverything_single_persistence(n = 1e5) {
|
||||
const yDoc = new Y.Doc({
|
||||
guid: 'test',
|
||||
});
|
||||
const map = yDoc.getMap();
|
||||
for (let i = 0; i < n; i++) {
|
||||
map.set(`${i}`, i);
|
||||
}
|
||||
const provider = createIndexedDBProvider(yDoc, 'test');
|
||||
provider.connect();
|
||||
await provider.whenSynced;
|
||||
provider.disconnect();
|
||||
provider.connect();
|
||||
await provider.whenSynced;
|
||||
provider.disconnect();
|
||||
}
|
||||
|
||||
async function main() {
|
||||
console.log('create many persistence');
|
||||
performance.mark('start');
|
||||
await yjs_create_persistence();
|
||||
performance.mark('end');
|
||||
performance.measure('yjs', 'start', 'end');
|
||||
indexedDB.deleteDatabase('test');
|
||||
performance.mark('start');
|
||||
await toeverything_create_provider();
|
||||
performance.mark('end');
|
||||
performance.measure('toeverything', 'start', 'end');
|
||||
console.log(performance.getEntriesByType('measure'));
|
||||
indexedDB.deleteDatabase('test');
|
||||
performance.clearMarks();
|
||||
performance.clearMeasures();
|
||||
localStorage.clear();
|
||||
|
||||
console.log('single persistence with huge updates');
|
||||
performance.mark('start');
|
||||
await yjs_single_persistence();
|
||||
performance.mark('end');
|
||||
performance.measure('yjs', 'start', 'end');
|
||||
indexedDB.deleteDatabase('test');
|
||||
performance.mark('start');
|
||||
await toeverything_single_persistence();
|
||||
performance.mark('end');
|
||||
performance.measure('toeverything', 'start', 'end');
|
||||
console.log(performance.getEntriesByType('measure'));
|
||||
}
|
||||
|
||||
main().then();
|
||||
Reference in New Issue
Block a user