-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
79 lines (69 loc) · 2.33 KB
/
index.ts
File metadata and controls
79 lines (69 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import {
createBaseLogger,
createLogger,
LogLevel,
PowerSyncDatabase,
SyncClientImplementation,
} from "@powersync/node";
import { AppSchema } from "./AppSchema.js";
import { SupabaseConnector } from "./SupabaseConnector.js";
import { createCollection } from "@tanstack/db";
import { powerSyncCollectionOptions } from "@tanstack/powersync-db-collection";
const baseLogger = createBaseLogger();
baseLogger.setLevel(LogLevel.TRACE);
const logger = createLogger("PowerSyncDemo");
const db = new PowerSyncDatabase({
schema: AppSchema,
database: {
dbFilename: "test.db",
},
logger,
});
// await db.disconnectAndClear();
const connector = new SupabaseConnector();
await connector.login("9@9.com", "9@9.com");
await connector.init();
console.log(await db.get("SELECT powersync_rs_version();"));
await db.connect(connector);
console.log("Waiting for first sync");
await db.waitForFirstSync();
console.log("First sync complete");
console.log("Simple map");
let start = performance.now();
global.gc?.();
let before = process.memoryUsage().heapUsed;
let result = await db.getAll<{ id: string }>("SELECT * FROM todos");
const index = new Map<string, (typeof result)[number]>();
for (const row of result) {
index.set(row.id, row);
}
console.log(index.size);
let spiked = process.memoryUsage().heapUsed;
global.gc?.();
let after = process.memoryUsage().heapUsed;
let elapsed = performance.now() - start;
console.log(`Time: ${elapsed.toFixed(2)} ms`);
console.log(`Delta with garbage: ${(spiked - before) / 1024 / 1024} MB`);
console.log(`Delta after GC: ${(after - before) / 1024 / 1024} MB`);
console.log("--------------------------------");
console.log("Tanstack collection");
const collection = createCollection(
powerSyncCollectionOptions({
database: db as any,
// We get typing and a default validator from this
table: AppSchema.props.todos,
// syncBatchSize: 1000,
}),
);
start = performance.now();
global.gc?.();
before = process.memoryUsage().heapUsed;
await collection.preload();
console.log(collection.size);
spiked = process.memoryUsage().heapUsed;
global.gc?.();
after = process.memoryUsage().heapUsed;
elapsed = performance.now() - start;
console.log(`Time: ${elapsed.toFixed(2)} ms`);
console.log(`Delta with garbage: ${(spiked - before) / 1024 / 1024} MB`);
console.log(`Delta after GC: ${(after - before) / 1024 / 1024} MB`);